使った
history | less
以前のコマンドの行を取得するために、左側の数字から、繰り返したい行(例:22)を見つけて実行しました
!22
コマンドプロンプトで動作し、そのときに実行したコマンドラインのセットを実行しました。感嘆符がどこで使用されているか、それがbashによって実行されたアクションに関して何を表しているのか、どこで使用するのかわかりません。ドキュメンテーションから、「具体的な」説明は見当たりません。
!
は、元々は Cシェル に表示されていた機能で、端末で矢印キーを使用できるようになる前の時代にさかのぼります。プロンプト(PS1="\!$ "
)に現在のコマンド番号を追加すると、画面をすばやく見て過去のコマンドの番号を取得できるので特に便利です。
矢印キーと次のようなものを使用できるようになりました Ctrl-R コマンド履歴を検索するために、この機能をあまり使用していません。
それでも便利だと思われるその1つのバリエーションは、前のコマンドを再実行する!!
です。それだけでは見つけられません !!Enter ただより速い ↑Enterですが、より大きなコマンドに組み合わせると役立ちます。
例:Sudo
ベースのシステムで一般的な パイロットエラー は忘れることです追加の特権を必要とするコマンドのSudo
接頭辞。初心者はコマンド全体を再入力します。勤勉な学生は、シェルのコマンド履歴からコマンドを編集します。悟りを開いた人はSudo !!
をタイプします。
Bashでは、!
またはset +o histexpand
を使用して、シェルでset +H
処理を無効にすることができます。 Zshでset -K
を使用して無効にできます。
ここでより長い回答がない場合、私は最近読んだので、スーパーユーザーには確かに1つあります。 bashのマニュアルページ には、HISTORY EXPANSIONというタイトルの大きなセクションがあります。
最後のコマンドまたはコマンド番号Xを実行するだけでなく、ホスト全体を実行できます。!cat
は、cat
で始まる最後のコマンドを実行します。または!?bash?:s/bash/csh/
は、bash
を含む最後のコマンドを実行しますが、csh
に置き換えます。
次のような!
を使用すると、さらに多くのことができます。
!-3
!ls
で始まるコマンドを実行するそしてもっとたくさん。参照 知っておくべき15のLinux Bash履歴拡張の例
もちろん、!!
を実行して、bashシェルで最後のコマンドを再利用できます。そして、最後のコマンドの最後の部分を再利用するための!$
があります。
例えばファイルを表示
less path/to/your/file.txt
同じファイルを編集する場合は、!$
を使用して、最後のコマンドからファイルパスのみを取得できます。
vim !$
編集:
前のコマンドのすべての引数を!*
で使用できます
例:これはいくつかのファイルを作成し、それらすべてを削除します
$ touch a.txt b.txt c.txt d.txt
$ rm !*
繰り返しますが、前のコマンドの特定の引数を使用できます
例えばこれにより4つのファイルが作成され、3番目のファイル(c.txt)が削除されます
$ touch a.txt b.txt c.txt d.txt
$ rm !:3
同様に、最後のコマンドの引数の範囲を次のように使用できます
$ touch a.txt b.txt c.txt d.txt
$ rm !:2-4
これは、式をrm b.txt c.txt d.txt
に評価する引数2〜4を再利用します
私の友人はこれを私にメールしました:
GNU履歴ライブラリの一部です。bashでは、履歴内のコマンドを再実行するために使用されます。ハードコアになりたい場合は、bash-4.1/lib/readline/histexpandでhistory_expansion_charのgrepを実行してください実装の詳細については、.c。