首页/系统/信创系统运维速查/PowerShell 与 bash 常用命令对照
迁移适配65 条

PowerShell 与 bash 常用命令对照

从 Windows 转过来的运维视角:进程、服务、网络、文本处理的高频命令一一对照,降低迁移期记忆成本。

信创系统运维速查系统更新于 2026-10-13

对照能解决什么

从 Windows 运维转到信创环境,最直接的障碍不是命令本身,而是『同一件事在两边叫什么』:查进程、看服务、测端口、搜文本,两边各有套路。把高频操作做成对照表,能显著降低迁移期的记忆成本。需要注意的是语义差异:bash 在文本流上做管道,PowerShell 在对象上做管道,脚本不能逐行翻译。

基本信息

适用场景Windows 运维人员过渡到 Linux / 信创系统
对照维度文件、进程、服务、磁盘、网络、文本搜索、定时任务
核心差异bash 管道处理文本,PowerShell 管道处理对象
通配符由 shell 展开 vs 命令自身匹配
脚本防护bash 建议 set -euo pipefail
迁移建议复杂脚本重写而不是逐行翻译

典型使用场景

  • 迁移期运维人员查进程、看服务、测端口时快速找到对应命令
  • 把 Windows 侧的批处理任务改写成 bash 与 systemd timer
  • 培训材料里用一张对照表降低上手门槛
  • 排查问题时从『Windows 上这么查』转换到等效的 Linux 命令
  • 评估既有脚本改造工作量时确认哪些操作有直接对应

常用对照

用途PowerShellbash(信创环境)
列文件Get-ChildItemls / find
进程Get-Processps -ef / top
服务Get-Servicesystemctl
磁盘Get-Volumedf -h / lsblk
连通测试Test-NetConnectionping / nc -vz
文本搜索Select-Stringgrep -r
计划任务Get-ScheduledTaskcrontab -l / systemctl list-timers
查看日志Get-EventLog / Get-WinEventjournalctl -u 服务

示例(高占用进程与端口探测)

示例(高占用进程与端口探测)
# PowerShell: Get-Process | Where-Object CPU -gt 60
ps -eo pid,pcpu,comm --sort=-pcpu | head            # 按 CPU 排序看占用最高的进程

# PowerShell: Test-NetConnection 10.0.0.9 -Port 443
nc -vz 10.0.0.9 443                                 # 探测单个端口连通性
ss -tlnp | grep -E ':443|:80'                       # 本机查看监听与对应进程

# PowerShell: Get-Service | Where-Object Status -eq 'Running'
systemctl list-units --type=service --state=running | head

脚本改造要点

脚本改造要点
#!/usr/bin/env bash
set -euo pipefail                    # 未定义变量报错、出错即退出、管道失败可见
# 用绝对路径调用命令,配合 PATH 可控,避免定时任务里找不到命令
/usr/bin/rsync -a /data /backup/
# 管道在 bash 中传文本,需自行解析;复杂逻辑建议重写
systemctl list-timers --all | awk '{print $1, $2}' | head
管道语义不同:bash 传的是文本流,需要 cut/awk/grep 解析;PowerShell 传的是对象,直接取属性。复杂脚本建议按目标环境重写,而不是逐行翻译。
通配符与引号规则差异大:bash 会由 shell 先展开通配符,变量在双引号内仍会展开,单引号内不展开,写脚本时要按下目标 shell 的规则来。

易错点

  • 把 PowerShell 脚本逐行翻译成 bash,对象与文本流的语义差异导致逻辑错位,问题在上线后才暴露
  • 以为两边同名命令行为一致,实际参数与输出格式不同,脚本解析结果与预期不符
  • 改写脚本时没加 set -euo pipefail,出错继续执行并产生错误结果,比直接失败更难排查
  • 通配符与引号规则照搬原脚本,bash 下通配符被提前展开,匹配到的文件集合与预期不同
  • 定时任务里不写绝对路径,PATH 与交互环境不同导致命令找不到

数据来源与参考

  • Microsoft Learn(PowerShell 参考)
  • man 1 bash
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌