web-dev-qa-db-ja.com

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

最近、「!」がたくさん入っているエコーに気づきました。奇妙なものになります。例えば: echo !!私に与える:

echo rm -r * 1000
rm -r * 1000

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

1
user96931

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

シェルの拡張について詳しくは、manbashページをご覧ください。 history Expansion のセクションに注意してください。これはevent designatorsのような!!について説明し、 expansion は他の形式のシェル拡張について説明します。 quoting のセクションでは、bashの引用メカニズムの動作と、一重引用符と二重引用符の文字列の評価方法の違いについて説明します。

3
Eugen Rieck