入力したプレフィックスを含む以前のコマンドを検索します。

入力したプレフィックスを含む以前のコマンドを検索します。

上矢印と下矢印を使用してコマンド履歴内を移動できます。

Matlabなどの一部のIDEでは、何かを入力してから矢印キーを押すと、入力した内容から始まるコマンド履歴の間だけスクロールします。これは本当に便利ですが、シェル端末では機能しません。

シェル端末で同様の機能を得る方法はありますか?端末をより効率的に使用するための他のヒントはありますか?

答え1

あなたが探しているのはですCtrlR

と入力CtrlRし、必要なコマンド部分を入力します。 Bash は最初に一致するコマンドを表示します。入力をCtrlR続けると、bashは以前に一致したコマンドを循環します。

履歴から戻るには、CtrlS代わりに入力してください。 (CtrlSこの方法がうまくいかない場合は、XON / XOFFフロー制御を無効にする必要があります。これを行うには、を実行します。stty -ixon

これは「検索」の下に説明されていますman bash

答え2

以下を次の項目に入れます~/.inputrc

"\e[5~": history-search-backward
"\e[6~": history-search-forward

彼らはあなたが期待するように作られ、Page Up働きPage Downます。 (一部のディストリビューションではすでにこれを構成しています。)私は個人的にこれらの方法がCtrl+Rまた​​はhistory。より便利だと思います。

更新:2022年9月にリリースされたbash-5.2 / readline-8.2では、これらの動作をデフォルトの動作に設定します。inputrc設定にはこれ以上操作は必要ありません。

答え3

次の行を追加します。~/.inputrc

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

これはegmontの答えと似ていますが、Page UpとPage Downを使用する代わりに、Arrow UpとArrow Downのエスケープシーケンスを使用します。この方法は、Macで使用する方がはるかに便利です。

答え4

私が一般的に使用するのは、historyコマンドを次のものと組み合わせることです。grep

つまり:

history | grep <command im looking for>

これにより、このコマンドを含む入力したコマンドの番号が付けられた履歴が表示され、次のものを使用できます。

!<number listed in history command>

コマンドを再実行してください。

つまり:

history | grep history

142  history
143  history | grep lvresize
568  history | grep echo
570  history | grep echo
571  history | grep history

以下は: !571

繰り返すhistory | grep history

関連情報