alias で echo する際のシングルクォートのエスケープ方法
alias
コマンドで、echo
コマンドのエイリアスを定義しようとしたのだが、echo
内にシングルクォートが書きたかった。
以前紹介したエスケープ方法でエスケープすればいいやと思ったのだが、alias
コマンドはエイリアスにしたいコマンドをシングルクォートで囲む。つまり、単純にシングルクォートだけをエスケープしようと思うと、alias
コマンドを途中で終えるようなことになってしまうのだ。
これを何とかする方法を導くまでの道のり。
まず、alias
抜きに普通に echo
する場合は、シングルクォートは \'
とエスケープすれば書ける。
次に、alias
内で単純にシングルクォートを書きたい場合は、'\''
と書く。'
で文を一度終え、\'
でクォートを書き、'
で後続の文を再開するのだ。
では、alias
で定義している echo
コマンド内に含まれる文字列として、シングルクォートを正しく認識させるようにするにはどうしたらいいか。
すなわち、シングルクォートをエスケープするための「\
」と、シングルクォート自体「'
」を両方書いてやらないと、echo
文にシングルクォートを含めた alias
を作れないので、「\'\''
」と書くことで、echo
用の「\'
」を表現するのだ。
# ということでこうなる。
alias grephelp='echo grep -r \'\''HOGE\'\'' ./'
これで、
$ grephelp
grep -r 'HOGE' ./
このような、grep
の使い方のヘルプを表示させるエイリアスが作れた (笑)。