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"'\'''

おすすめ記事