我如何问PowerShell的东西在哪里?

例如,"which notepad",它根据当前路径返回notepad.exe运行的目录。


当前回答

如果你有勺子,你可以安装一个直接克隆:

scoop install which
which notepad

其他回答

看看这个PowerShell哪个。

这里提供的代码表明:

($Env:Path).Split(";") | Get-ChildItem -filter notepad.exe

与Unix的快速匹配

New-Alias which where.exe

但如果它们存在,它会返回多行,然后它就变成

function which {where.exe command | select -first 1}

还有使用which的选项。实际上有三种方法可以从Windows powershell中访问

第一个(虽然不是最好的)是wsl(linux的windows子系统)

wsl -e which command 

这需要安装Linux的windows子系统和一个正在运行的发行版。

下一个是gnuwin32,它是几个。exe格式的gnu二进制文件的移植,作为独立的捆绑启动程序 第三,安装msys2(跨编译器平台),如果你去/usr/bin中安装它,你会发现很多很多最新的gnu utils。他们中的大多数工作作为独立的exe,可以从bin文件夹复制到你的家庭驱动器的某个地方,并添加到你的路径。

如果你想要一个既接受管道输入又接受参数输入的命令,你应该试试这个:

function which($name) {
    if ($name) { $input = $name }
    Get-Command $input | Select-Object -ExpandProperty Path
}

复制粘贴命令到您的概要文件(记事本$profile)。

例子:

❯ echo clang.exe | which
C:\Program Files\LLVM\bin\clang.exe

❯ which clang.exe
C:\Program Files\LLVM\bin\clang.exe

在Windows 2003或更高版本(或Windows 2000/XP,如果您已经安装了Resource Kit)上尝试使用where命令。

顺便说一下,这个问题在其他问题中得到了更多的答案:

Windows上有对应的“which”吗?

PowerShell相当于Unix的哪个命令?