有沒有辦法使用cmder過濾Windows中的指令歷史記錄?

有沒有辦法使用cmder過濾Windows中的指令歷史記錄?

在 Linux 中,我可以做類似的事情history | grep abc,這只會顯示以「abc」開頭的命令。在cmder中使用Windows,我可以使用命令調出命令歷史記錄history,但我找不到透過命令的前幾個字母來過濾它的方法。似乎沒有與|和等價的字眼grep

答案1

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

Cmder::Cmdersessions中history有一個dokey巨集。巨集的輸出無法使用管道傳遞,|但您可以使用作為 doskey 巨集內容的命令。

參考: https://github.com/cmderdev/cmder/issues/1770

答案2

grepWindows 中的粗略模擬是findfindstr。所以只需運行history 2>&1 | find "abc"history 2>&1 | findstr abc

它們之間的差異在於:

  • find支援 Unicode (UTF-16) 但不支援正規表示式,findstr支援正規表示式但不支援 Unicode
  • find需要在搜尋字串周圍加引號,但findstr不需要

為什麼同時存在 FIND 和 FINDSTR 程序,且功能集不相關?

在PowerShell中會有更好的解決方案:選擇字串。它支援所有內容find,甚至findstr更多。而且沒有線路長度限制

相關內容