Bashの感嘆符(!)を理解する

Bashの感嘆符(!)を理解する

使った

history | less

前のコマンドの行と左の数字で繰り返したい行(例:22)を見つけて実行しました。

!22

コマンドプロンプトでは、私が実行していた行から一連のコマンドを実行しました。感嘆符がどこで使用されているのか、bashがどのようなアクションをとるのか、どこで使用するのかわかりません。ドキュメントに「実質的な」説明が表示されません。

ベストアンサー1

!通話履歴の拡張、この機能はもともと以下で登場しました。Cシェル、端末に矢印キーがあると信じられなかった時代。これは、現在のコマンド番号をプロンプト(PS1="\!$ ")に追加して、過去のコマンドの番号を画面にすばやく表示できる場合に特に便利です。

これで、方向キーや検索コマンドの履歴Ctrl-Rなどを使用できますが、その機能はあまり役に立たないようです。

!!前のコマンドを再実行するこの便利なバリエーションがまだ見つかります。それ自体では、!!Enterコマンドがより高速であることがわかりませんでしたが、 Enterより大きなコマンドに組み合わせると役に立ちます。

例:ノーマルパイロットエラー存在するsudoシステムベースのアプローチは、sudo追加の権限が必要なコマンドの前にプレフィックスを付けることを忘れてしまうことです。初心者の場合は、コマンド全体を再入力してください。勤勉な学生は、シェルのコマンド履歴からコマンドを編集します。啓発型sudo !!

このタイプの処理は、対話型シェルのBashでデフォルトで有効になっており、有効または無効に!できます。 Zshを使用して無効にすることができます。set +o histexpandset +Hset -K

おすすめ記事