GNU/Linux >> Linux の 問題 >  >> Linux

Bashの感嘆符(!)を理解していますか?

使用しました

history | less

前のコマンドの行を取得し、左側の数字から、繰り返したい行(22など)を見つけて実行しました

!22

コマンドプロンプトで、それは機能しました—その時に行った行で一連のコマンドを実行しました。感嘆符がどこで使用されているのか、bashによって実行されるアクションの観点から何を表しているのか、どこで使用するのかがわかりません。ドキュメントから、「具体的な」説明は見当たりません。

承認された回答:

履歴拡張を呼び出します。これは、元々Cシェルに表示されていた機能であり、端末に矢印キーがあると期待できるようになる前の時代にさかのぼります。現在のコマンド番号をプロンプトに追加すると特に便利です( PS1 ="!$" )画面をすばやく確認して、過去のコマンドの番号を取得できます。

これで、矢印キーや Ctrl-Rなどを使用できるようになりました。 コマンド履歴を検索するために、この機能はあまり使用されていません。

それでも役立つと思われるバリエーションの1つは、 !!です。 、前のコマンドを再実行します。それだけでは、は見つかりません! 入力 よりも高速 入力 、ただし、より大きなコマンドに組み合わせると役立つ場合があります。

例: sudoでよくあるパイロットエラー ベースのシステムはsudoを忘れることです 追加の特権を必要とするコマンドのプレフィックス。初心者はコマンド全体を再入力します。勤勉な学生は、シェルのコマンド履歴からコマンドを編集します。悟りを開いた人はsudo!!と入力します 。

を処理しています このように、インタラクティブシェルではデフォルトでBashで有効になり、 set + o histexpandで無効にできます。 またはset+ H set -K を使用して、Zshで無効にすることができます 。


Linux
  1. Linuxでhistoryコマンドを使用する方法

  2. コマンドラインでの毎日のBashのヒント

  3. LinuxでBASHコマンドライン履歴をクリアする方法

  1. LinuxでBashの履歴をクリアする方法

  2. Bashの「評価」コマンド?

  3. Linux での export コマンドの役割は何ですか?

  1. Linux での Bash シェルの変数について

  2. bash で履歴の編集を無効にする方法

  3. Bash の「test」コマンドでの「&&」と「&」の比較