当前位置:首页>Linux>Linux基础 | diff 命令使用指南:快速找出两个文件的不同

Linux基础 | diff 命令使用指南:快速找出两个文件的不同

  • 2026-10-11 14:35:07
Linux基础 | diff 命令使用指南:快速找出两个文件的不同
在 Linux 日常使用中,经常会遇到这样的场景:
修改了配置文件,不知道改了哪里
对比两个版本的代码
检查备份文件是否一致
分析日志文件差异
例如有两个文件:
config_old.txt

port=80

server=nginx

log=on

config_new.txt

port=8080

server=nginx

log=off

如果用肉眼对比其实很麻烦,这时候 Linux 提供了一个非常实用的工具:
diff
一句话理解:diff 用于比较两个文件的差异。
它会清楚地告诉你哪一行被修改、删除或新增。

一、diff 命令基本语法

基本格式:
diff 文件1 文件2
示例:
diff config_old.txt config_new.txt
输出示例:
1c1< port=80---> port=80803c3< log=on---> log=off
解释:
< 表示旧文件内容
> 表示新文件内容
可以清楚看到修改的行。

二、并排显示差异(-y)

默认 diff 输出比较难读,可以使用:-y
示例:
diff -y config_old.txt config_new.txt
输出:

port=80        | port=8080

server=nginx     server=nginx

log=on         | log=off

解释:
| 表示两侧内容不同
这种方式更直观。

三、忽略大小写(-i)

如果文本大小写不同但内容一致,可以使用:-i
示例:
diff -i file1.txt file2.txt
这样:
Linux
linux
也会被认为是相同内容。

四、忽略空格差异(-b)

有时文件只是空格不同。
例如:
user=admin
user = admin
可以使用:
diff -b file1.txt file2.txt
这样 diff 会忽略空格差异。

五、比较目录差异

diff 不仅可以比较文件,还可以比较目录。
示例:
diff dir1 dir2
输出示例:
Only in dir1: file1.txt
Only in dir2: file2.txt
含义:
dir1 中有 file1.txt
dir2 中有 file2.txt
如果想递归比较目录:
diff -r dir1 dir2

六、生成补丁文件(开发常用)

在开发中,diff 经常用于生成补丁文件。
示例:
diff old.txt new.txt > patch.diff
生成补丁文件:
patch.diff
内容示例:
1c1
< old content
---
> new content
其他用户可以使用:
patch old.txt patch.diff
应用修改。
这在开源项目开发中非常常见。

七、比较系统配置文件(实战)

假设你修改了 nginx 配置:
备份旧配置:
cp nginx.conf nginx.conf.bak
修改配置后可以比较:
diff nginx.conf.bak nginx.conf
输出:
15c15
< listen 80;
---
> listen 8080;
这样可以快速确认修改内容。

八、结合颜色显示(更易读)

很多 Linux 系统提供彩色 diff:
diff --color file1 file2
输出:
红色:删除内容
绿色:新增内容
阅读体验更好。

九、diff 常用参数总结

参数
作用
-y
并排显示差异
-i
忽略大小写
-b
忽略空格
-r
递归比较目录
常见组合:
diff file1 file2diff -y file1 file2diff -r dir1 dir2

十、小结

diff 是 Linux 中用于比较文件差异的重要工具。
常见应用场景:
对比配置文件修改
比较代码版本
检查文件变化
生成补丁文件
一句话总结:diff 就像 Linux 里的“文件对比工具”。
在实际开发和运维中,它经常与以下工具一起使用:
patch
git
vim
掌握 diff 后,你就能轻松找出文件之间的任何变化。

最新文章

随机文章