在 PowerShell 中使用命令别名
如果有使用传统 Windows 命令提示符 shell (cmd.exe) 的经验,则可能还熟悉批处理命令,例如:
- dir 用于列出文件和文件夹。
- cd 用于更改目录。
- mkdir 用于新建目录。
在许多情况下,可以继续在 Windows PowerShell 中使用这些命令,因为这些命令在后台运行本机 PowerShell cmdlet。 dir 命令运行 Get-ChildItem,cd 命令运行 Set-Location,mkdir 命令运行 New-Item。 这些命令在 PowerShell 中运行,因为它们是执行等效操作的 cmdlet 的别名。
别名和参数
请务必注意,别名通常不支持原始命令使用的参数。 例如,如果在控制台中运行命令 dir /o:d,则将收到错误,因为 Get‑ChildItem 无法识别 /o:d 参数。 相反,可以使用 dir | sort LastAccessTime 按上次访问的日期和时间以升序列出当前文件夹的内容。
Get-Alias
PowerShell 不仅包含旧批处理和 Linux 命令的别名。 它还提供其他别名(例如 Get-ChildItem 的别名为 gci),可用于将完整命令替换为其缩写表示法,并最大限度地减少所需的键入量。 通过使用 Get-Alias cmdlet,可以发现别名、别名定义及其运行的命令。 不带参数的 Get-Alias 返回所有已定义的别名。 可以使用 -Name 参数(一个位置参数,也接受通配符)来查找特定别名的定义。 例如,运行命令 Get-Alias di* 将返回 diff 和 dir 的别名。
还可以使用 Get-Alias cmdlet 来发现新的 cmdlet。 例如,可以使用批处理命令 del 删除文件或文件夹。 可以输入命令 Get-Alias del 来发现 del 是 Remove-Item 的别名。 甚至可以通过运行命令 Get‑Alias -definition Remove-Item 来发现 Remove-Item 具有其他几个别名,包括 rd、erase 和 ri。
参数也可以具有别名。 例如,-s 参数是 Get-ChildItem cmdlet 中 -Recurse 的别名。 实际上,对于参数,如果命令中包含的名称部分足以唯一标识该参数,则可以像使用别名一样使用部分参数名称。
New-Alias
还可以使用 New-Alias cmdlet 创建自定义别名,并将其映射到任何现有 cmdlet。 但请记住,自定义别名不会在 Windows PowerShell 会话之间保存。 每次打开 Windows PowerShell 时,都可以使用 Windows PowerShell 配置文件重新创建别名。
补充阅读:有关创建和使用 PowerShell 配置文件的详细信息,请参阅 about_Profiles。
别名的缺点
虽然别名可帮助你更快地输入命令,但它们往往会造成脚本更难查看和理解。 其中一个原因是动-名词语法清楚地定义了正在发生的动作。 该语法创建的命令阅读和听起来更像自然语言。 参数和部分参数名采用别名会增加看懂脚本的难度。 在大多数情况下,使用 Tab 自动补全功能可将输入命令的速度提高到与输入别名一样快,同时确保其准确性。