私の履歴ファイルからコマンドを取得するgrepより良い方法はありますか?私はその命令の始まりが何であるかを知っていますが、それがどれくらい前にさかのぼるのかわかりません。
修正する:以前はzshに固有でしたが、答えが重なっているので、すべてのシェル(またはモード(vi / emacs))に対して自由に回答し、具体的な場合にのみ注意してください。
答え1
答え2
Bashを使用している場合は、Control-と入力してRから入力を開始します。一部のテキストを入力して繰り返し入力すると、一致するControlコマンドRラインに戻ります。
答え3
以下を追加すると~/.inputrc
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Bashを再起動すると、入力を開始してから、およびを使用して入力したばかりのプレフィックスで始まる行履歴から前後に移動できPage UpますPage Down。
(一部の人々は、新しいキーをバインドするのではなく、一般的な作業を置き換えて使用すること\e[A
を好むかもしれません。)\e[B
UpDown
答え4
すでに述べたようCtrlに、対話型通話プロンプトが最も便利な方法です。また、現在のコマンドラインにあるプレフィックスの履歴を取得するために再マッピングし、矢印キーを使用することが広く使用されていRますが、これにはいくつかの要件があります。UpDown~/.inputrc
ファイルに変更。
古典的でインタラクティブでないソリューションは、シェル履歴拡張を使用することです。タイプ
!foo
foo
で始まる最後のコマンドを実行します。
!?foo
含まれている最後のコマンドが実行されますfoo
。歴史的拡張の詳細については、以下を参照してください。バッシュリファレンスマニュアル、シェルが Bash または互換性があるとします。