Windows 命令和 Linux 命令到底有什么区别?
平时写代码、部署项目或者折腾服务器时,经常会同时接触 Windows 和 Linux。
虽然两边很多操作逻辑类似,但命令风格、目录结构、系统习惯其实差别挺大。刚开始切换环境的时候,经常会出现“这个命令怎么不能用”的情况。
这篇文章就把 Windows和 Linux里常见的命令差异整理一下,尽量用比较容易理解的方式说明。
一、终端环境的区别
Windows 和 Linux 最大的差别,其实是默认终端环境不同。
| 对比项 | Windows | Linux |
|---|---|---|
| 默认终端 | CMD、PowerShell | Bash、Zsh |
| 大小写是否敏感 | 一般不敏感 | 敏感 |
| 路径写法 | \ |
/ |
| 是否有盘符 | 有(C盘、D盘) | 没有,统一从 / 开始 |
| 脚本格式 | .bat、.ps1 |
.sh 或无后缀 |
比如在 Windows 里:
1 | |
而 Linux 一般是:
1 | |
另外,Linux 对大小写是严格区分的。
1 | |
在 Linux 里,这两个会被认为是不同文件。
二、文件和目录操作
日常最常用的基本就是文件操作,两边命令其实能一一对应。
| 功能 | Windows(CMD) | Linux(Bash) |
|---|---|---|
| 查看文件 | dir |
ls -la |
| 进入目录 | cd |
cd |
| 当前目录 | cd |
pwd |
| 创建文件夹 | mkdir |
mkdir -p |
| 删除文件 | del |
rm |
| 删除目录 | rmdir /S |
rm -rf |
| 复制文件 | copy |
cp |
| 移动文件 | move |
mv |
| 查看文件内容 | type |
cat |
| 清屏 | cls |
clear |
例如删除一个目录:
Windows:
1 | |
Linux:
1 | |
很多人刚接触 Linux 时,最容易记混的就是 rm -rf。
这个命令删除后一般不会进回收站,所以执行之前最好确认一下路径。
三、文本处理
Linux 在文本处理这方面会更强一些,尤其适合日志分析、批量处理文件。
| 功能 | Windows | Linux | ||
|---|---|---|---|---|
| 查找内容 | findstr |
grep |
||
| 排序 | sort |
sort |
||
| 统计行数 | find /V /C "" |
wc -l |
||
| 重定向 | >、>> |
>、>> |
||
| 管道 | ` | ` | ` | ` |
比如查找日志里的 error:
Windows:
1 | |
Linux:
1 | |
如果只是简单使用,其实差距不大。
但 Linux 的命令组合能力会更强,很多复杂操作都能直接在终端完成。
四、网络相关命令
做开发或者运维时,经常需要查看 IP、测试网络或者检查端口。
| 功能 | Windows | Linux |
|---|---|---|
| 查看网络配置 | ipconfig |
ip addr |
| 测试网络 | ping |
ping |
| 路由追踪 | tracert |
traceroute |
| DNS 查询 | nslookup |
dig / nslookup |
| 查看端口 | netstat -ano |
ss -tlnp |
| 下载文件 | curl |
curl / wget |
| SSH 连接 | ssh |
ssh |
查看本机 IP:
Windows:
1 | |
Linux:
1 | |
现在 Windows 其实也逐渐开始内置很多 Linux 常用工具了,比如 curl 和 ssh。
五、进程和服务管理
系统管理时,经常会用到查看进程、结束进程这些操作。
| 功能 | Windows | Linux |
|---|---|---|
| 查看进程 | tasklist |
ps aux |
| 结束进程 | taskkill |
kill |
| 强制结束 | taskkill /F |
kill -9 |
| 查看服务 | sc query |
systemctl list-units |
| 启动服务 | net start |
systemctl start |
| 停止服务 | net stop |
systemctl stop |
比如结束一个进程:
Windows:
1 | |
Linux:
1 | |
Linux 里很多服务管理都会通过 systemctl 完成,这也是现代 Linux 比较常见的方式。
六、系统信息查看
想看磁盘、内存或者系统版本时,两边也有不同命令。
| 功能 | Windows | Linux |
|---|---|---|
| 系统信息 | systeminfo |
uname -a |
| 磁盘空间 | wmic logicaldisk |
df -h |
| 文件夹大小 | dir /S |
du -sh |
| 内存信息 | wmic memorychip |
free -h |
| 当前用户 | whoami |
whoami |
Linux 下比较常见的一个命令是:
1 | |
可以直接查看磁盘使用情况,而且会自动转换为更容易阅读的单位。
七、环境变量
环境变量也是开发环境里很常见的一部分,比如配置 Java、Node 或 Python。
| 操作 | Windows | Linux |
|---|---|---|
| 查看全部变量 | set |
env |
| 查看 PATH | echo %PATH% |
echo $PATH |
| 设置变量 | set VAR=value |
export VAR=value |
| 删除变量 | set VAR= |
unset VAR |
例如:
Linux:
1 | |
Windows:
1 | |
不过 Windows 里很多时候还是会直接在“系统环境变量”界面里配置。
八、脚本语法差异
Windows 和 Linux 的脚本语法区别还是比较明显的。
Windows 批处理:
1 | |
Linux Shell:
1 | |
几个比较明显的区别:
| 功能 | Windows | Linux |
|---|---|---|
| 变量引用 | %VAR% |
$VAR |
| 注释 | REM 或 :: |
# |
| 条件判断 | if |
if [ ] |
| 循环 | for %%i |
for i in |
整体来说,Linux Shell 的灵活度会更高一些。
九、几个容易踩坑的地方
1. 路径分隔符
Windows 用的是:
1 | |
Linux 用的是:
1 | |
虽然现在很多 Windows 工具也兼容 /,但最好还是按系统习惯写。
2. 空格路径
路径带空格时,两边都容易出问题。
Windows:
1 | |
Linux:
1 | |
3. 换行符不同
Windows 默认是:
1 | |
Linux 默认是:
1 | |
所以有时候脚本在 Windows 能运行,放到 Linux 就会报错。
Git 一般可以通过下面这个配置自动处理:
1 | |
十、最后总结
如果只是日常使用,其实 Windows 和 Linux 的很多命令都能找到对应关系。
但 Linux 更偏向命令组合和自动化处理,而 Windows 更偏向图形化和系统集成。
刚开始不用强行死记,多用几次以后,自然就会形成习惯。