エコーは何をしているのですか?

エコーは何をしているのですか?

最近、エコーに「!」をたくさん含めると奇妙な結果になることに気づきました。たとえば、次のecho !!ようになります。

echo rm -r * 1000
rm -r * 1000

(rm -r *これは、入力する前に最後に実行したコマンドです)。なぜこのようなことが起こるのでしょうか。また、これを無効にする方法はありますか。

答え1

shell expansionシェルはコマンドを解析し、特殊なワイルドカードを他の情報に置き換えます。echo '!!'シェルの展開と引用符で何ができるかを理解するには、(一重引用符)を試してください。

manシェル拡張の詳細については、 のページをご覧くださいbash。 のセクションに注意してください。歴史の拡大、これはevent designatorsのようなことを論じており!!拡大では、他の形態のシェル拡張について論じている。引用bash の引用メカニズムの動作と、一重引用符と二重引用符で囲まれた文字列の評価方法の違いについて説明します。

関連情報