上ボタンを押すのは面倒で、探していたコマンドを見逃すかもしれません。そのhistory
ため、端末で入力すると、以前に入力したすべてのコマンドが番号にインデックス付けされて表示されます。コマンドに関連付けられた番号を呼び出す方法はありますか?
上ボタンを押すのは面倒で、探していたコマンドを見逃すかもしれません。そのhistory
ため、端末で入力すると、以前に入力したすべてのコマンドが番号にインデックス付けされて表示されます。コマンドに関連付けられた番号を呼び出す方法はありますか?
回答:
bashの履歴は多くの有用なことを行うことができますが、Strg-r
Terry Wangが言及した検索はその中でも重要なものです。しかし、あなたが要求したとおりに行うこともできます。
で前のコマンドをやり直すことができ!!
ます。これにより、前のコマンドを編集することもできます。たとえば、コマンドのルート権限を取得するのを忘れた場合
apt-get install a-long-list-of-packages
そのすべてを再度入力する必要はありません。代わりに呼び出すだけ
sudo !!
履歴から特定の位置でコマンドを再実行する場合!
は、たとえば、を使用することもできます
!3
位置3でコマンドを再実行します。これは上からカウントされることに注意してください。したがって、履歴に500個のコマンドを保存している場合、!1
「500コマンド前」になります。負の数を使用することもできます。例えば
!-2
最後から2番目のコマンドを再実行します。
次のような文字列で開始した最後のコマンドを再実行することもできます
!apt-
「apt-」で始まった最後の行を再実行します。文字列が行のどこかに現れる最後のコマンドが必要な場合は、次のようなものを使用できます
!?pt-ge
bashの履歴にはもっと面白いことがあります。幅広い可能性の印象を与えるために、履歴からコマンドのパラメーターに特にアクセスできます。そう
!-5:3:p
最後のコマンドから3番目のパラメーターを5番目に出力します。
編集:以下のRudieのコメントに関して、標準設定では、このbash履歴展開は実際に直接実行されます。おそらく次のように説明するのが一番いいでしょう:のような呼び出し!-3
は、履歴から最後から3番目のコマンドを持つシェルに置き換えられ、その後、入力(置換を含む)が実行されます。したがって、入力して!-3
を押しENTER
、最後から3番目のコマンドがだったls ~
場合、実際にls ~
もう一度入力してENTER
「自分で」を押した場合と同じです。
必要ない場合は、シェルオプションを設定できますhistverify
。シェルオプションの設定と設定解除については、shopt
コマンドを参照してください。histverify
設定し、同様の呼び出し!-3
だけでは、あなたのコマンドラインにあなたの履歴から交換を書き込みますが、それを直接実行しません。ENTER
必要に応じて、重要なものを自分で押すか、または控えてください。
!
危険です... !-4
実行する前に正確に何をしたか知りたいです。または、最初に表示されますか?クールな要約!
!-238
。最後から2番目、最後から3番目、おそらく最後の最後のコマンドを思い出すのはそれほど難しくないはずです;)Linux(そして実際にはコンピューティング全般)でよくあることですが、何をしているのかを知っていることが期待されます。そして、あなたは本当に、追加のセーフティネットをしたい場合、それは一つだshopt
離れ;)
はいあります。たとえば、横に番号1234があるコマンドを実行する場合は、次のようにします。
!1234
その他の便利なもの:
最後に実行したコマンドを実行する場合は、次を実行します。
!!
最後に実行したls
コマンドを実行する場合は、次を実行します。
!ls
実行したばかりls /some/long/path
で、実行したいcd
場合は、以下を実行します。
cd !$
詳細については:
キーの組み合わせを使用Ctrl
- r
、キーワードを使用してbash履歴を検索できます。
クイックbashキーバインディングリファレンス:http : //ss64.com/bash/syntax-keyboard.html
コマンドの履歴番号を見つけて、それを再度実行する場合!
は、たとえば番号を続けて入力し、!1234
を押しEnterます。これは歴史の拡大の一部です。修飾子を追加できます。
コマンドを実行する前に編集する場合fc 1234
は、外部エディターを呼び出します。
しかし、テリー王は、すでに述べたように含むその履歴番号、決定よりも歴史の中でコマンドの位置を特定する方法は通常より速いがあるCtrl+をRインクリメンタルサーチ(プレス呼び出すためにEnterあなたが実行したいコマンドを見つけた)、またはfc PREFIX
以前を実行するためには、で始まるコマンドPREFIX
。