我在我的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命令?
ls
是get-childitem
命令的Powershell中的别名。 如果要运行一个名为ls
的外部命令,则需要强制Powershell忽略它自己的ls
命令。
您可以尝试运行ls.exe
,或指定MinGW命令的路径,或ls.exe
定义Powershell别名。 或者学习使用Powershell自己的ls
命令的选项。
最接近的等效于ls -al
Powershell将是ls -Force
这将显示所有隐藏和系统文件,而ls
Powershell的默认输出看起来有点像ls -l
格式。
你可以使用Powershell的get-command
来检查哪个命令可以执行类似的工作(或者使用gcm
作为简写来减少输入:
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