Linuxパソコン・サーバー環境のBashコマンドラインで、!(エクスクラメーション/びっくりマーク)をエスケープする方法について紹介します。
画像を入れたらmarkdownを返してくれるbash関数を組みたかったのですが、エクスクラメーションの障壁にぶち当たった。
!自体は、普段はあまり使うことはないが、結構便利なコマンド。ctrl+rで履歴が見れるのは有名だが、例えばpwd
を実行した後に!p
または!pw
と実行すると、pwdが実行される。こういうもの。だが、これのエスケープがなかなか曲者だった。
bash – Bashで! エクスクラメーションをエスケープするには(140827)|teratail
質問
Bashで! エクスクラメーションをエスケープするにはどうしたらよいでしょうか。
$ echo "\)"
\
\ でエスケープしているのに、\まで出力されてしまいます………。
回答
echo '!'"[$(echo "hgoe")]($(echo "hgoe"))"
感想
”と””で文字列の連結ができるんですね、bashは。知らなかったなぁ。普通できませんよね。トリッキーといいますか。
普通だったらecho "" + '' ;
みたいにするかと思いますが、コマンドライン独特ですね。