Linux 到 PowerShell 命令速查表与核心差异解析
Linux 到 PowerShell 的完整命令映射表,详解别名、原生 Cmdlet 以及文本流与对象流的核心差异。
PowerShell 内置了许多常见 Linux 命令的别名,让你可以在 Windows 终端中直接输入熟悉的 ls、cd、cat 等指令。
然而在底层,PowerShell 并没有执行 Unix 二进制文件,而是将这些别名翻译成了 Windows 的面向对象 cmdlet(例如:输入 ls 实际上触发的是 Get-ChildItem)。
因为这些只是外层包装(Wrapper),所以 Linux 特有的复合参数(如 ls -la 或 rm -rf)无法直接生效,必须使用 PowerShell 规范的参数语法。
Linux 到 PowerShell 命令转换速查表#
下表列出了常见 Linux 操作对应的 PowerShell 别名及原生 cmdlet:
| Linux 命令 | PowerShell 别名 | 原生 PowerShell Cmdlet | 说明 / 示例用法 |
|---|---|---|---|
ls | ls / dir / gci | Get-ChildItem | 列出目录内容。查看隐藏文件:Get-ChildItem -Force |
cd | cd / chdir / sl | Set-Location | 切换当前工作目录 |
pwd | pwd / gl | Get-Location | 输出当前目录的绝对路径 |
cat | cat / type / gc | Get-Content | 读取并显示文件内容 |
mkdir | mkdir / ni | New-Item -ItemType Directory | 创建新目录 |
touch | (无) | New-Item -ItemType File | 创建空文件(如:ni file.txt) |
cp | cp / copy / cpi | Copy-Item | 复制文件或目录到目标位置 |
mv | mv / move / mi | Move-Item | 移动或重命名文件/目录 |
rm | rm / del / ri | Remove-Item | 删除文件或目录。强制递归删除:rm -Recurse -Force |
echo | echo / write | Write-Output | 将文本输出到终端管道 |
grep | (使用 sls) | Select-String | 模式匹配搜索(如:`cat file.txt \ |
clear | clear / cls | Clear-Host | 清空终端屏幕 |
ps | ps / gps | Get-Process | 列出当前运行的系统进程 |
kill | kill / pkill / sps | Stop-Process | 根据 ID 或名称终止进程(如:kill -Name notepad) |
curl / wget | curl / wget / iwr | Invoke-WebRequest | 发起 Web 请求(注:PowerShell 7+ 已移除 curl 别名) |
which | (无) | Get-Command | 查找命令的绝对路径或来源 |
必须掌握的 2 大核心差异#
1. 纯文本 vs .NET 对象(Text vs. Objects)#
在 Linux 中,管道(|)之间传递的是纯文本(Plain Text)。通常需要配合 grep、awk、sed 等工具解析字符串。
而在 PowerShell 中,数据以结构化的 .NET 对象传递。无需复杂的字符串切分,可直接读取对象属性:
ps aux | grep "chrome" | awk '{print $2, $3}'bashGet-Process chrome | Select-Object Id, CPU, ProcessNamepowershellflowchart TD
subgraph Linux["Linux 管道 (纯文本流)"]
L1["命令 A (Raw Text)"] -->|Text Stream| L2["grep / awk / sed"]
L2 -->|Filtered Text| L3["过滤后的字符串"]
end
subgraph PowerShell["PowerShell 管道 (.NET 对象流)"]
P1["Cmdlet A (.NET 对象)"] -->|Object Stream| P2["Select-Object / Where-Object"]
P2 -->|Structured Object| P3["直接读取属性 Property"]
end
2. 参数与选项机制(Flags & Arguments)#
PowerShell 不支持 Linux 的短参数拼接(如 -rf、-al),而是使用明确的 -ParameterName 命名参数系统。
- 如果命令报错,可通过内置帮助文档查看有效参数:
powershellGet-Help Get-ChildItem -Detailed - PowerShell 参数支持 Tab 补全,且只要前缀无歧义即可缩写(例如
-Recurse可缩写为-Rec)。
[!TIP] 实用技巧: 如果想念
which等 Linux 指令,可以在 PowerShell 配置文件($PROFILE)中永久配置别名:powershellNew-Alias -Name which -Value Get-Command
参考资料#
- Comparing Linux/Bash to PowerShell — Reddit r/PowerShell ↗
- Equivalent of Linux Commands in PowerShell — Nerdsid ↗
- Is PowerShell better than Linux for basic commands? — Reddit ↗
- PowerShell equivalent to Linux ls -la — Stack Overflow ↗
- Unix utilities in PowerShell — GitHub ↗
- PowerShell vs Bash Object Pipeline — YouTube ↗
- PowerShell equivalent to the Unix which command — SuperUser ↗