質問: Bashで! エクスクラメーションをエスケープするにはどうしたらよいでしょうか。 ``` $ echo "\![$(echo "hgoe")]($(echo "hgoe"))" \!hgoe ``` \ でエスケープしているのに、\まで出力されてしまいます.........。 いくつか記事を探して、見ましたが、¥でエスケープできる、と書いてあるものもあり、ただ実際はエスケープこそできているものの、エスケープ文字も文字に入ってしまっているという謎現象が......。 どうしたらよいでしょうか。
回答: man bashの二重引用符`"`の部分の説明です。 > > 履歴展開は有効であれば実行されますが、ダブルクォート中の ! がバックスラッシュでエスケープされている場合を除きます。 ! の前のバックスラッシュは削除されません。 > > > なので、`!` は、一重引用符`'`かバックスラッシュ`\`でクォートする必要があります。