您正在使用的ls Unix 实用程序的选项:
PowerShell 等效项 是:
Get-ChildItem -Force
请参阅底部以了解缩短此命令和定义方便的“别名”(函数)。
ls 和 Get-ChildItem 之间有一个根本区别,但是:
为了交互方便(您不应该在脚本中这样做),您可以使用内置别名 em> 和 明确的参数名称前缀 以缩短命令:
gci -fo
gci 是Get-ChildItem 的内置别名,其名称遵循PowerShell 的命名约定,其中每个所谓的approved verb 也有一个经过批准的1-2 字母别名 形式;运行Get-Verb Get 表明已批准的Get 动词的别名形式为g;虽然 名词 部分没有正式规定,但记住 ci 代表 ChildItem 应该很容易。
-fo 是最短的参数名称前缀,明确引用-Force 开关(仅-f 也可以引用-Filter[1])
- 注意:有些参数本身有实际的别名,例如
-h 代表-Hidden 或-ad 代表-Directory,但-Force 没有。
- 与明确的参数名称前缀不同(如果将新参数添加到命令中会随着时间的推移变得不明确),参数别名可以安全地在脚本中使用,但为了便于阅读,最好使用全名。
查看为给定命令定义的所有个别名(本例中为Get-ChildItem):
PS> Get-Alias -Definition Get-ChildItem
CommandType Name Version Source
----------- ---- ------- ------
Alias dir -> Get-ChildItem
Alias gci -> Get-ChildItem
要将输出限制为 内置 别名,即排除由其他模块或 $PROFILE 脚本定义的别名,请运行 pwsh -noprofile { Get-Alias -Definition Get-ChildItem }(在 Windows PowerShell 中,请改用 powershell pwsh.
- 上面显示了 macOS 和 Linux 上的输出。
-
在Windows 上,您会看到
ls 是另一个 内置别名。
因此,建议使用那些是 PowerShell 命令名称的缩写形式的别名,例如 gci 代表 Get-ChildItem,gc 代表 @987654384 @。虽然这最初无助于从熟悉的名称(例如 ls / dir 和 cat 转换),但 PowerShell cmdlet 名称及其缩写别名是系统化且基于约定的,这使得记忆它们变得更容易继续前进。
使用function,使用预设参数定义一个方便的“别名”:
POSIX 兼容的 shell(例如 bash)允许您使用 preset 参数定义别名,例如 alias ll='ls -al'
相比之下,aliases in PowerShell 只是 名称映射,您需要声明一个 函数(您可以将其添加到您的 $PROFILE 文件中以备将来使用会话):
# Equivalent of bash alias `alias ll='ls -al'`
function ll { ls -al @args }
或者,基于Get-ChildItem 的类似gcih 函数(h 表示隐藏):
function gcih { Get-ChildItem -Force @args }
请参阅this answer,了解有关 PowerShell 中别名与函数的更多信息,包括如何创建更复杂的包装函数。
[1] 概念上,也可以指-File参数,但技术上后者是一个动态参数,特定于 PowerShell 的文件系统提供程序,因此在歧义检查期间不考虑。