logo
Published on

Bashコマンドラインで!(びっくりマーク)をエスケープ

Authors

Linuxパソコン・サーバー環境のBashコマンドラインで、!(エクスクラメーション/びっくりマーク)をエスケープする方法について紹介します。 画像を入れたらmarkdownを返してくれるbash関数を組みたかったのですが、エクスクラメーションの障壁にぶち当たった。

※ Xserverにこちらの紹介リンクから登録すると最大1万円の割引が適用されます。ぜひご利用ください。(全てのPRを表示)

!自体は、普段はあまり使うことはないが、結構便利なコマンド。ctrl+rで履歴が見れるのは有名だが、例えばpwdを実行した後に!pまたは!pwと実行すると、pwdが実行される。こういうもの。だが、これのエスケープがなかなか曲者だった。

bash - Bashで! エクスクラメーションをエスケープするには(140827)|teratail

質問

Bashで! エクスクラメーションをエスケープするにはどうしたらよいでしょうか。

$ echo "\![$(echo "hgoe")]($(echo "hgoe"))"
\![hgoe](hgoe)

\ でエスケープしているのに、\まで出力されてしまいます………。

回答

echo '!'"[$(echo "hgoe")]($(echo "hgoe"))"

感想

''と""で文字列の連結ができるんですね、bashは。知らなかったなぁ。普通できませんよね。トリッキーといいますか。 普通だったらecho "" + '' ;みたいにするかと思いますが、コマンドライン独特ですね。