有没有办法使用 cmder 过滤 Windows 中的命令历史记录?

有没有办法使用 cmder 过滤 Windows 中的命令历史记录?

在 Linux 中,我可以执行类似history | grep abc和 的操作,这样只会显示以“abc”开头的命令。在 Windows 的 cmder 中,我可以使用命令显示命令的历史记录history,但我找不到通过命令的前几个字母进行过滤的方法。似乎没有与|和等效的命令grep

答案1

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

Cmder::Cmder会话中history有一个 doskey 宏。宏的输出不能通过管道传递|,但您可以使用作为 doskey 宏内容的命令。

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

答案2

grep在 Windows 中,的大致类似为findfindstr。因此,只需运行history 2>&1 | find "abc"history 2>&1 | findstr abc

它们的区别在于:

  • find支持 Unicode (UTF-16) 但不支持正则表达式,findstr支持正则表达式但不支持 Unicode
  • find要求搜索字符串周围有引号,但findstr不需要

为什么有 FIND 和 FINDSTR 程序,但它们的功能集却不相关?

在 PowerShell 中有一个更好的解决方案:选择字符串。它支持所有内容find以及findstr更多。并且它没有行长限制

相关内容