Terminal与PowerShell中DIR命令的差异及参数报错问题咨询
Terminal与PowerShell中DIR命令的差异及参数报错问题咨询
嗨,这个问题其实是因为PowerShell和传统CMD(你说的Terminal)是完全不同的Shell环境,虽然它们都用dir这个词,但背后对应的命令和参数逻辑天差地别,并不是简单的扩展关系~
为什么会报错?
在CMD里,dir /A是内置命令的参数写法,/A用来指定要显示所有属性的文件/目录。但在PowerShell里:
dir只是Get-ChildItem这个PowerShell cmdlet的别名,不是CMD的dir命令。- PowerShell的参数语法是用
-开头(比如-Path、-Force),而不是CMD的/。所以当你输入dir /A时,PowerShell会把/A当成一个路径来解析,也就是去找C:\A这个不存在的路径,自然就抛出找不到路径的错误了。
怎么在PowerShell里实现同样的效果?
有两种常用方法:
使用PowerShell原生语法
如果你想显示所有属性的文件(包括隐藏、系统文件),可以用Get-ChildItem的对应参数:- 显示隐藏和系统文件:
Get-ChildItem -Force(或者简写dir -Force) - 查看所有属性的项:
Get-ChildItem -Attributes *
你可以用Get-Help Get-ChildItem查看完整的参数说明,了解更多用法。
- 显示隐藏和系统文件:
直接调用CMD的dir命令
如果习惯了CMD的参数写法,也可以在PowerShell里直接让CMD来执行这个命令:cmd /c dir /A
小提示
可以输入Get-Alias dir来确认dir在PowerShell里对应的实际命令,这样就能更清楚两者的区别啦~
备注:内容来源于stack exchange,提问作者konto




