为什么我可以 运行 更少,grep 并在 Windows Powershell 中找到?
Why I can run less, grep and find in Windows Powershell?
一位朋友告诉我 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
你可以试试这个
where.exe find
where.exe less
where.exe grep
如果您的 PC 上存在这些工具,他们将 return 提供 exe 文件的路径。你总是可以 运行 find
因为有 find.exe
,虽然它不是 Unix find
而是一个搜索文本的工具。 less
和 grep
默认情况下不可用,但如果您安装了 Cygwin、MSYS 或 Gnu32,那么它们将在路径中准备就绪。 Git on Windows 运行s on MSYS 所以不出所料你可以 运行 less
, grep
或其他 Unix 工具
请注意,您需要使用 where.exe command
而不是像在 cmd.exe 上那样仅使用 where command
因为 where
在 powershell 上具有不同的含义
如果您想知道为什么可以看到它们,您可以 运行 Get-Command
命令,它会告诉您从哪里调用文件(也是查找底层 VBS 的好工具当您不时 运行 命令时调用的脚本)
例如,LS
命令在 PowerShell 中有效,但它实际上与 Bash 中使用的二进制文件不同。
_>Get-Command ls
CommandType Name Version Source
----------- ---- ------- ------
Alias ls -> Get-ChildItem
这里我们可以看到,在本例中,运行ning LS
实际上是调用[=14=的Cmdlet(即原生PowerShell命令)的PowerShell别名].
如果您 运行 在其他命令上这样做,您可以确定为什么会看到它们。也许你在某个时候安装了 cygwin,或者安装了 Python / Ruby(一些安装程序包 Bash 二进制文件)。
一位朋友告诉我 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
你可以试试这个
where.exe find
where.exe less
where.exe grep
如果您的 PC 上存在这些工具,他们将 return 提供 exe 文件的路径。你总是可以 运行 find
因为有 find.exe
,虽然它不是 Unix find
而是一个搜索文本的工具。 less
和 grep
默认情况下不可用,但如果您安装了 Cygwin、MSYS 或 Gnu32,那么它们将在路径中准备就绪。 Git on Windows 运行s on MSYS 所以不出所料你可以 运行 less
, grep
或其他 Unix 工具
请注意,您需要使用 where.exe command
而不是像在 cmd.exe 上那样仅使用 where command
因为 where
在 powershell 上具有不同的含义
如果您想知道为什么可以看到它们,您可以 运行 Get-Command
命令,它会告诉您从哪里调用文件(也是查找底层 VBS 的好工具当您不时 运行 命令时调用的脚本)
例如,LS
命令在 PowerShell 中有效,但它实际上与 Bash 中使用的二进制文件不同。
_>Get-Command ls
CommandType Name Version Source
----------- ---- ------- ------
Alias ls -> Get-ChildItem
这里我们可以看到,在本例中,运行ning LS
实际上是调用[=14=的Cmdlet(即原生PowerShell命令)的PowerShell别名].
如果您 运行 在其他命令上这样做,您可以确定为什么会看到它们。也许你在某个时候安装了 cygwin,或者安装了 Python / Ruby(一些安装程序包 Bash 二进制文件)。