별칭을 설정할 수 없습니다.hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"'
나는 다음을 시도했지만실패:
alias analyze=\'hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"'\'
(처음과 마지막 작은 따옴표에 주목하세요. 둘 다 이스케이프 처리했습니다)
alias analyze='hexdump -e \'/1 "%_ax) "\' -e \'/1 "%02X" "\n"\''
(이 경우 명령 사이에 작은따옴표 4개를 모두 이스케이프 처리했습니다.)
alias analyze=hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"'
(명령을 따옴표로 묶지 마십시오)
hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"'
Bash에서 별칭을 설정하는 방법은 무엇입니까 ?
답변1
경험상 한 종류의 인용문을 이스케이프 처리해도 작동하지 않으면 다른 인용문을 이스케이프하세요.
alias analyze="hexdump -e '/1 \"%_ax) \"' -e '/1 \"%02X\" \"\n\"'"
여기에서는 내부 큰따옴표를 이스케이프 처리하고 모든 것을 큰따옴표로 묶었습니다.
완전한 규칙은 큰따옴표 안에는 큰따옴표를 이스케이프할 수 있지만 작은따옴표 안에는 작은따옴표를 이스케이프할 수 없다는 것 같습니다. 외부 항목을 이스케이프해야 하는데 별칭을 정의할 때는 작동하지 않습니다.
$ alias hi='echo hi' #works
$ alias hi='echo "hi"' #works
$ alias hi='echo \"hi\"' #works
$ alias hi="echo \'hi\'" #works
$ alias hi="echo \"hi\"" #works
$ alias hi='echo \'hi\'' #doesn't work
$ alias hi=\'echo 'hi'\' #should work but doesn't
별칭이 올바르게 정의되면 alias
모든 별칭을 나열하는 명령을 사용하여 정답이 무엇인지 bash에 물어볼 수 있습니다. 올바른 참조를 찾을 수 없으면 속임수를 써서 @meuh의 방법을 사용할 수 있습니다. 이 경우:
$ alias
alias analyze='hexdump -e '\''/1 "%_ax) "'\'' -e '\''/1 "%02X" "\n"'\'''
답변2
bash가 이스케이프 따옴표를 수행하도록 할 수도 있습니다.
read -r <<\!
hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"'
!
alias analyze="$REPLY"