bash에서 단일 및 이중 qoutes를 포함하는 명령 별칭을 설정하는 방법

bash에서 단일 및 이중 qoutes를 포함하는 명령 별칭을 설정하는 방법

별칭을 설정할 수 없습니다.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"

관련 정보