上矢印と下矢印を使用してコマンド履歴内を移動できます。
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