1

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

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

如果默认情况下它们不能在 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
4

2 回答 2

3

你可以试试这个

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

如果您的 PC 上存在这些工具,它们将返回 exe 文件的路径。你总是可以运行find,因为有find.exe,虽然它不是 Unixfind而是一个搜索文本的工具。less并且grep默认情况下不可用,但如果您安装了 Cygwin、MSYS 或 Gnu32,那么它们将在路径中准备就绪。Windows 上的 Git 在 MSYS 上运行,所以不出所料,你可以运行lessgrep或者其他 Unix 工具

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

于 2017-11-03T13:34:00.657 回答
2

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

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

_>Get-Command ls

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

在这里我们可以看到,在这种情况下,runningLS实际上是一个 PowerShell 别名,它调用Get-ChildItem.

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

于 2017-11-03T14:08:24.647 回答