如何在PowerShell中将参数传递给类Unix命令(通过MinGW)

时间:2014-11-10 10:40:20

标签: windows powershell mingw

我在我的Windows机器上使用MinGW,当我将其与command-prompt一起使用时,事情按预期工作:

  • ls列出了可见文件
  • ls -a列出所有文件等

但是,当我启动Powershell时,它会在我将命令传递给我的命令时不断抛出错误:

D:\>ls -al .

Get-ChildItem : A parameter cannot be found that matches parameter name 'al'.
At line:1 char:4
+ ls -al .
+    ~~~
  + CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
  + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.Powershell.Commands.GetChildItemCommand

如何通过Powershell正确使用我的所有MinGW / msys命令?

1 个答案:

答案 0 :(得分:4)

ls是Powershell中get-childitem命令的别名。如果要运行名为ls的外部命令,则需要强制Powershell忽略其自己的ls命令。

您可以尝试运行ls.exe,或指定MinGW命令的路径,或取消定义Powershell别名。或者学习使用Powershell自己的ls命令的选项。

最接近的ls -al的Powershell将是ls -Force这将显示所有隐藏和系统文件,而ls的Powershell默认输出看起来有点像ls -l格式。

您可以使用Powershell的get-command检查将运行哪个命令,该whichgcm执行类似的工作(或使用PS C:\Users\IEUser> get-command ls.exe CommandType Name Version Source ----------- ---- ------- ------ Application ls.exe 0.0.0.0 C:\Program Files\OpenSSH\bin\ls.exe PS C:\Users\IEUser> get-command ls CommandType Name Version Source ----------- ---- ------- ------ Alias ls -> Get-ChildItem PS C:\Users\IEUser> gcm ls CommandType Name Version Source ----------- ---- ------- ------ Alias ls -> Get-ChildItem PS C:\Users\IEUser> gcm ls.exe CommandType Name Version Source ----------- ---- ------- ------ Application ls.exe 0.0.0.0 C:\Program Files\OpenSSH\bin\ls.exe 作为减少输入的简写:

PS C:\Users\IEUser> set-alias which gcm
PS C:\Users\IEUser> which ls

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

如果您不想学习新命令:

{{1}}