我无法设置别名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"