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