【问题标题】:Why I can run less, grep and find in Windows Powershell?为什么我可以在 Windows Powershell 中运行 less、grep 和 find?
【发布时间】:2018-04-16 06:00:40
【问题描述】:

一位朋友告诉我,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

【问题讨论】:

  • find 在 Windows 中是 find.exe,这是一个类似于 Linux 中的 grep 的工具

标签: powershell terminal grep less-unix


【解决方案1】:

你可以试试这个

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

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

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

【讨论】:

  • 谢谢。 Git安装带来了这些命令:)我会更新问题并参考你的答案。
【解决方案2】:

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

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

_>Get-Command ls

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 2013-09-05
    • 1970-01-01
    相关资源
    最近更新 更多