别名是什么
别名是命令的短名称,PowerShell 启动时预置了一批:dir 指向 Get-ChildItem、cd 指向 Set-Location、curl 指向 Invoke-WebRequest。别名在命令解析时优先于同名可执行文件,所以“同一个命令行为不一样”多半是别名在起作用。它也解释了一批经典困惑,比如在 PowerShell 里敲 curl 得到的是 PowerShell 的网页请求 cmdlet,参数与 curl.exe 完全不同。
基本信息
| 适用平台 | PowerShell 5.1 / 7.x;各版本预置别名集合略有差异 |
|---|---|
| 查看语法 | Get-Alias -Name 别名;Get-Alias -Definition 命令 |
| 定义语法 | Set-Alias -Name 名称 -Value 命令 |
| 删除语法 | Remove-Item Alias:名称 |
| 生效范围 | 默认只在当前会话;写进 Profile 才对每次启动生效 |
| 解析优先级 | 别名 > 函数 > cmdlet > 外部可执行文件 |
典型使用场景
- 查清某个短命令实际执行的是什么,解释行为差异
- 查一个命令有哪些别名,快速反推可用简写
- 为常用命令定义会话级简写,提高交互效率
- 排查脚本里依赖的别名在升级后是否还存在
- 确认 curl、wget、ls 这类跨平台同名命令的归属
常用示例
常用示例
Get-Alias curl # 看 curl 在 PowerShell 里指向谁
Get-Alias dir # dir 实为 Get-ChildItem 的别名
Get-Alias -Definition Invoke-WebRequest # 反查某命令有哪些别名
Set-Alias -Name ll -Value Get-ChildItem # 定义会话级别名
Remove-Item Alias:ll # 删除别名
curl.exe --version # 要真 curl 就写全名
Get-Command curl -All | Format-List CommandType, Name, Source # 看清解析全貌常见别名对照
| 别名 | 实际命令 | 需要留意的差异 |
|---|---|---|
| dir | Get-ChildItem | 输出是对象不是文本 |
| cd | Set-Location | 支持 PSDrive 路径 |
| curl | Invoke-WebRequest | 参数与原版完全不同 |
| wget | Invoke-WebRequest | 同上 |
| ls | Get-ChildItem | 在 Linux 上则是外部命令 |
| where | Where-Object | 要查文件位置请写 where.exe |
脚本里不要依赖别名:不同 PowerShell 版本预置集合有差异,跨版本或跨平台执行时别名可能不存在,写全命令名最稳。
想弄清一条命令到底会被谁执行,用 Get-Command <名称> -All 一次列全,比反复猜别名更高效;它还会标出别名、函数与可执行文件的优先级顺序。
别名的作用域是会话:交互窗口里定义的简写在计划任务、CI 流水线这类全新会话里不存在,所以正式脚本里请统一使用完整命令名,别名只留给自己敲着省事。