ZSH-履歴全体を出力しますか?


37

最近、bashからzshに切り替えました。bashのでは、私が以前に実行したコマンドを見つけるために使用されることを(再帰検索のほかに)一つの方法だったhistory | grep whatever、どこwhateverコマンドのビットは、私が覚えています。

zshでは、これは機能しません。ファイルに多くのエントリが含まれhistoryているにもかかわらず、いくつかのアイテムのみを返します.zsh_history

検索に適した履歴全体を出力するにはどうすればよいgrepですか?

回答:


48

履歴は、[first] [last]引数としてzshエントリの範囲を受け入れますhistory 0。そのため、それらすべてを実行します。

zshヘルプを取得するには(少なくとも念頭に置いて)Alt-hhistoryコマンドを上書きすると、ビルトインのヘルプが表示されます。


3
すばらしいです!私は私のaliasesファイルにこれを追加しているので、それは、けれども、私にとっては迷惑なデフォルトです:alias history="history 0"
ネイサンロング

7
ではないことが問題なく、履歴リストは1から始まり、0でないこと
ggustafsson

2
私はこのエイリアスを自分で使用しています:alias h='history 1 | grep'
ハラルドノルドグレン

3
これは私にはうまくいかないようです:私~/.zsh_historyは10066行を持っていますが、history 0(またはそれに相当するfc -l 0)4999行しか印刷しません。
ジェイヘンドレン

2
history 1 | grep人々 、私はあなたが知っている願っていますctrl+r-史上最高のトリック/ショートカット!
エミールバタイ

9

受け入れ答えは正しいですが、それの価値はあなたがいないことは注目に必要な外部コールするgrepという能力が焼きされているため、検索を行うために、バイナリを、私は、この関数が私の中で定義されています。.zshrc

histsearch() { fc -lim "*$@*" 1 }

ノート:

  • fcインタラクティブな履歴を制御するzshビルトインです。 historyはと同等fc -lです。

  • -mフラグは引用符で囲む必要がありますパターンを、必要とします。

  • -iフラグは、タイムスタンプが追加されます。

  • fcスリーブにはさらに多くのトリックがあります(たとえば、現在のセッションの内部履歴に検索を制限する)。zshbuiltins(1)マニュアルページまたは公式ドキュメントを参照してください。


さらに良いのは、「$ @」の代わりに「* $ @ *」(追加の星に注意)パターンを使用することです。後者は完全一致のみを生成するためです。
ピョートルドブロゴスト

1
@PiotrDobrogost、あなたは完全に正しいです!私が行った状態でこの回答をどのように送信したかはわかりません。メモリからその関数を入力したに違いないと思います。現状ではあまり有用ではないので、アスタリスクを組み込むために回答を編集します。
wjv

3

見ていfzfを。シェルの履歴で「どんな粒子」でも見つけるだけでなく、ブラウザの履歴、ディレクトリの履歴など、他の興味深い場所でも見つけることができます。

fzfは、コマンドラインのファジーファインダーです。これは、探しているものの粒子または断片を検索できることを意味し、継続的に調整できる一致のコレクションが表示されます。それは本当にゲームチェンジャーです。

著者のホームページには多くの実例が含まれています。


あなたが述べたことを裏付けるこの回答への参照を追加することを検討してください。
ポン引きジュースIT

スーパーユーザーへようこそ!お読みくださいソフトウェアをお勧めする方法のために最低限必要な情報や、スーパーユーザーにソフトウェアをお勧めする方法についての提案。提供されたリンクが壊れていても有用な回答を維持するには、これらの詳細を回答に編集する必要があります。
私は17:10
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.