Windows 命令和 Linux 命令到底有什么区别?

平时写代码、部署项目或者折腾服务器时,经常会同时接触 Windows 和 Linux。
虽然两边很多操作逻辑类似,但命令风格、目录结构、系统习惯其实差别挺大。刚开始切换环境的时候,经常会出现“这个命令怎么不能用”的情况。

这篇文章就把 Windows和 Linux里常见的命令差异整理一下,尽量用比较容易理解的方式说明。


一、终端环境的区别

Windows 和 Linux 最大的差别,其实是默认终端环境不同。

对比项 Windows Linux
默认终端 CMD、PowerShell Bash、Zsh
大小写是否敏感 一般不敏感 敏感
路径写法 \ /
是否有盘符 有(C盘、D盘) 没有,统一从 / 开始
脚本格式 .bat.ps1 .sh 或无后缀

比如在 Windows 里:

1
cd D:\blog

而 Linux 一般是:

1
cd /home/user/blog

另外,Linux 对大小写是严格区分的。

1
2
README.md
readme.md

在 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
rmdir /S test

Linux:

1
rm -rf test

很多人刚接触 Linux 时,最容易记混的就是 rm -rf
这个命令删除后一般不会进回收站,所以执行之前最好确认一下路径。


三、文本处理

Linux 在文本处理这方面会更强一些,尤其适合日志分析、批量处理文件。

功能 Windows Linux
查找内容 findstr grep
排序 sort sort
统计行数 find /V /C "" wc -l
重定向 >>> >>>
管道 ` ` ` `

比如查找日志里的 error:

Windows:

1
findstr error log.txt

Linux:

1
grep error log.txt

如果只是简单使用,其实差距不大。
但 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
ipconfig

Linux:

1
ip addr

现在 Windows 其实也逐渐开始内置很多 Linux 常用工具了,比如 curlssh


五、进程和服务管理

系统管理时,经常会用到查看进程、结束进程这些操作。

功能 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
taskkill /PID 1234 /F

Linux:

1
kill -9 1234

Linux 里很多服务管理都会通过 systemctl 完成,这也是现代 Linux 比较常见的方式。


六、系统信息查看

想看磁盘、内存或者系统版本时,两边也有不同命令。

功能 Windows Linux
系统信息 systeminfo uname -a
磁盘空间 wmic logicaldisk df -h
文件夹大小 dir /S du -sh
内存信息 wmic memorychip free -h
当前用户 whoami whoami

Linux 下比较常见的一个命令是:

1
df -h

可以直接查看磁盘使用情况,而且会自动转换为更容易阅读的单位。


七、环境变量

环境变量也是开发环境里很常见的一部分,比如配置 Java、Node 或 Python。

操作 Windows Linux
查看全部变量 set env
查看 PATH echo %PATH% echo $PATH
设置变量 set VAR=value export VAR=value
删除变量 set VAR= unset VAR

例如:

Linux:

1
export JAVA_HOME=/usr/local/java

Windows:

1
set JAVA_HOME=C:\Java

不过 Windows 里很多时候还是会直接在“系统环境变量”界面里配置。


八、脚本语法差异

Windows 和 Linux 的脚本语法区别还是比较明显的。

Windows 批处理:

1
2
3
@echo off
set name=World
echo Hello %name%!

Linux Shell:

1
2
3
#!/bin/bash
name="World"
echo "Hello $name!"

几个比较明显的区别:

功能 Windows Linux
变量引用 %VAR% $VAR
注释 REM:: #
条件判断 if if [ ]
循环 for %%i for i in

整体来说,Linux Shell 的灵活度会更高一些。


九、几个容易踩坑的地方

1. 路径分隔符

Windows 用的是:

1
\

Linux 用的是:

1
/

虽然现在很多 Windows 工具也兼容 /,但最好还是按系统习惯写。


2. 空格路径

路径带空格时,两边都容易出问题。

Windows:

1
cd "C:\Program Files"

Linux:

1
cd /home/user/My\ Files

3. 换行符不同

Windows 默认是:

1
CRLF

Linux 默认是:

1
LF

所以有时候脚本在 Windows 能运行,放到 Linux 就会报错。
Git 一般可以通过下面这个配置自动处理:

1
git config --global core.autocrlf true

十、最后总结

如果只是日常使用,其实 Windows 和 Linux 的很多命令都能找到对应关系。

但 Linux 更偏向命令组合和自动化处理,而 Windows 更偏向图形化和系统集成。

刚开始不用强行死记,多用几次以后,自然就会形成习惯。