シェル履歴を検索する最良の方法

シェル履歴を検索する最良の方法

私の履歴ファイルからコマンドを取得するgrepより良い方法はありますか?私はその命令の始まりが何であるかを知っていますが、それがどれくらい前にさかのぼるのかわかりません。

修正する:以前はzshに固有でしたが、答えが重なっているので、すべてのシェル(またはモード(vi / emacs))に対して自由に回答し、具体的な場合にのみ注意してください。

答え1

Ctrl+はR一般的に最良のアプローチです。記述子は言う!string、で始まる最新のコマンドを実行するstring!?string?、を使用してを含む最新のコマンドを実行することもできますstring

(私はこれがこの質問に関連する唯一のものだと思いますが、私はこの回答)

答え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[BUpDown

答え4

すでに述べたようCtrlに、対話型通話プロンプトが最も便利な方法です。また、現在のコマンドラインにあるプレフィックスの履歴を取得するために再マッピングし、矢印キーを使用することが広く使用されていRますが、これにはいくつかの要件があります。UpDown~/.inputrcファイルに変更

古典的でインタラクティブでないソリューションは、シェル履歴拡張を使用することです。タイプ

!foo

fooで始まる最後のコマンドを実行します。

!?foo

含まれている最後のコマンドが実行されますfoo。歴史的拡張の詳細については、以下を参照してください。バッシュリファレンスマニュアル、シェルが Bash または互換性があるとします。

関連情報