web-dev-qa-db-ja.com

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

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

Zshでは、これは機能しません。 historyは、たとえ.zsh_historyファイルには多くのエントリが含まれています。

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

44
Nathan Long

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

Zshのヘルプを取得するには(少なくとも念頭に置いて)、historyコマンドにAlt-hと入力すると、組み込みのヘルプが表示されます。

61
Kyle Brandt

受け入れられた答えは正しいですが、外部のgrepバイナリを呼び出して検索する必要がない必要がないことに注意してください。その機能が組み込まれているので、この関数を_.zshrc_で定義しています。

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

ノート:

  • fcは、対話型の履歴を制御するzshビルトインです。 historyは_fc -l_と同等です。

  • _-m_フラグにはパターンが必要であり、引用符で囲む必要があります。

  • _-i_フラグはタイムスタンプを追加します。

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

11
wjv

fzf をご覧ください。これは、シェルの履歴で「何でも粒子」を見つけるだけでなく、他の興味深い場所、たとえばブラウザの履歴、ディレクトリの履歴など.

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

著者の homepage には、いくつかの例が含まれています。

3