web-dev-qa-db-ja.com

BASHのreverse-i-searchを循環する方法は?

端末で、次のように入力できます CTRL-R 以前にBASHで入力した一致するコマンドを検索します。たとえば、 CTRL-R 次に、grepは最後のgrepコマンドをリストし、Enterキーを押すと使用できます。ただし、これは1つの提案にすぎません。以前に入力した他の一致するコマンドを循環する方法はありますか?

505
Village

私が質問を正しく理解していれば、繰り返し叩くことで代替案を循環できるはずです Ctrl+R

例えば。:

Ctrl+R grep Ctrl+RCtrl+R ...

それはあなたの歴史を逆に検索します。代わりに前方検索するには、 Ctrl+S、ただし、その前にstty -ixon.bash_profileまたは手動で)を設定して、引き継ぐXON/XOFF機能を無効にする必要がある場合があります。 Ctrl+s。 (詳細 ここ 。)

656
Runium

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

コマンド#便利

その後

ctrl+r #useful

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

250
Sathyam

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

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

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

$ ls bart
$ ls fools

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

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

48
l0b0

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

Example

これが デモスクリーンキャスト です。

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

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

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

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

3
saaj