BASH で逆 i 検索を循環させるにはどうすればよいでしょうか?

BASH で逆 i 検索を循環させるにはどうすればよいでしょうか?

ターミナルでCtrl+と入力すると、R以前 BASH で入力したコマンドに一致するものを検索できます。たとえば、Ctrl+と入力するRgrep、最後に入力しgrepたコマンドが一覧表示されるので、Enter キーを押して使用できます。ただし、これは 1 つの候補しか表示しません。以前に入力した他の一致するコマンドを循環的に検索する方法はありますか?

答え1

Ctrl質問を正しく理解していれば、 + を繰り返し押すことで選択肢を切り替えることができるはずですR

例えば:

  • Ctrl+R
  • grep
  • Ctrl+R
  • Ctrl+ R ...

これは履歴を逆方向に検索します。代わりに前方に検索するにはCtrl+を使用しますが、その前に(または手動で) set: を実行して、 +に取って代わる XON/XOFF 機能を無効にするS必要があります。それでもこのエラーが発生する場合は、+ を使用して画面出力を再度有効にしてください (詳細stty -ixon.bash_profileCtrlSCtrlQここ

答え2

コマンドが頻繁に使用されると思われる場合は、タグを追加することができます

command #useful

それから

Ctrl+R #useful

これは、 がコメント区切り文字であるため機能します#。つまり、 記号の後に続くものはすべてコマンドとして解釈されません。ただし、履歴に記録されるため、検索可能です。

答え3

~/.inputrc に次の行を追加することで、上下の矢印を設定して少し異なる検索を行うこともできます。

"\e[A": history-search-backward
"\e[B": history-search-forward

コマンド内の任意の場所にある部分文字列を検索する代わりに(Ctrl-r)コマンドを検索しますカーソルの左側のテキストから開始たとえば、次のコマンドを実行するとします。

$ ls bart
$ ls fools

と入力して2 回ls押すと、同じ場所に とカーソルがUp表示されます。-と比較すると、最後の行で が 2 回見つかるので、前の行を見つけるにはもう一度押す必要があります。ls bartCtrlrls

これらのアプローチにはそれぞれ長所があり、どちらも多くの時間を節約できます。

答え4

Ctrl + R組み込みの代替として、文字列これによって、すべての検索トークンに一致するコマンド履歴を同時に検索し、矢印キーを使用して結果を循環させることができます。

例

こちらはデモスクリーンキャスト

次のような Debian ファミリー OS にインストールできます。

add-apt-repository ppa:ultradvorka/ppa
apt-get update
apt-get install hstr

hstr --show-configuration >> ~/.bashrc

そしてCtrl + R(ターミナルを再度開いた後に)使用します。

関連情報