为什么我可以在Windows Powershell中运行更少,更少的grep并找到它?

时间:2017-11-03 13:25:47

标签: powershell terminal grep less-unix

一位朋友告诉我,Windows PowerShell没有这些unix样式的命令。好吧,我试过,看到我实际上可以运行这些。

现在我想知道为什么会这样。可能是因为我在这台Windows机器上安装了NodeJ?

如果它们在Windows PowerShell中默认不可用,是否有办法找出在Windows安装中使用它们的确切原因?

运行Windows 8.1。

对于那些感兴趣的人,基于所选择的答案,我发现在这台机器上安装Git已经使用了这些命令:

PS C:\Users\myusername> where.exe grep
C:\Users\myusername\AppData\Local\Programs\Git\usr\bin\grep.exe

PS C:\Users\myusername> where.exe less
C:\Users\myusername\AppData\Local\Programs\Git\usr\bin\less.exe

2 个答案:

答案 0 :(得分:2)

你可以试试这个

where.exe find
where.exe less
where.exe grep

如果您的电脑上有这些工具,他们会返回

请注意,您需要在cmd.exe上使用where.exe而不是where cmd,因为powershell上的where具有不同的含义

答案 1 :(得分:2)

如果你想知道为什么你可以看到它们,你可以运行Get-Command命令,它会告诉你文件的调用位置(也是一个很好的工具,可以找到当你调用的底层VBS脚本)不时运行命令)

例如,LS命令在PowerShell中有效,但它实际上与Bash中使用的二进制文件不同。

_>Get-Command ls

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           ls -> Get-ChildItem

我们在这里可以看到,在这种情况下,运行LS实际上是一个PowerShell别名,它调用Get-ChildItem的Cmdlet(也就是说,本机PowerShell命令)。

如果您在其他命令上运行此命令,则可以确定看到它们的原因。也许您在某些时候安装了cygwin,或者安装了Python / Ruby(一些安装程序包打包Bash二进制文件)。