cmder を使用して Windows のコマンド履歴をフィルターする方法はありますか?

cmder を使用して Windows のコマンド履歴をフィルターする方法はありますか?

Linux では、 と のようにするhistory | grep abcと、「abc」で始まるコマンドのみが表示されます。Windows の cmder では、 コマンドを使用してコマンドの履歴を表示できますhistoryが、コマンドの最初の数文字でフィルタリングする方法が見つかりません。|とに相当するものはないようですgrep

答え1

cat %CMDER_ROOT%\config\.history | grep abc

Cmder::Cmderセッションにはhistorydoskey マクロがあります。マクロの出力はパイプを使用して渡すことはできませ|んが、doskey マクロの内容であるコマンドを使用できます。

参照: https://github.com/cmderdev/cmder/issues/1770

答え2

grepWindowsでののおおよその類似物はfindと ですfindstr。つまり、history 2>&1 | find "abc"または を実行するだけです。history 2>&1 | findstr abc

それらの違いは次のとおりです。

  • findUnicode (UTF-16) はサポートしていますが、正規表現はサポートしていません。また、findstr正規表現はサポートしていますが、Unicode はサポートしていません。
  • find検索文字列を引用符で囲む必要があるがfindstr

無関係な機能セットを持つ FIND プログラムと FINDSTR プログラムの両方が存在するのはなぜですか?

PowerShell には、より良い解決策があります:文字列を選択のすべてfindfindstrそれ以上のものをサポートします。また、行の長さの制限はありません。

関連情報