使用diff命令可逐行比对文件差异,支持统一格式输出、忽略空白与大小写,递归比较目录,而cmp用于二进制文件差异检测,辅以colordiff等工具实现彩色或词级对比。

在Linux命令行中比对文件,最常用的方法是使用diff命令。它能逐行比较两个文件的内容,输出它们的差异,非常适合检查配置文件、代码版本或文本内容的变化。
使用 diff 命令查看文件差异
diff 是最基本的文件比对工具。基本语法如下:
diff file1.txt file2.txt
输出结果会显示哪些行被修改、添加或删除。常见的标记含义:
- 数字c/数字:表示内容被更改(change)
- 数字d/数字:表示行被删除(delete)
- 数字a/数字:表示行被添加(add)
如果希望以更易读的方式查看差异,可以加上 -u 参数生成统一格式(unified diff)输出:
diff -u file1.txt file2.txt
忽略空白字符和大小写差异
有时候文件内容逻辑相同,但因空格、制表符或换行不同而被判定为不同。可以使用以下选项:
- -w:忽略所有空白字符差异
- -b:忽略空白数量变化(如多个空格变一个)
- -i:忽略大小写
例如:
diff -w file1.txt file2.txt
比较目录中的文件
diff 也可以比较两个目录下的文件。使用 -r(递归)选项:
diff -r dir1/ dir2/
它会列出所有子目录中不一致的文件,并显示具体差异。
使用 cmp 查看二进制文件差异
对于非文本文件(如图片、可执行程序),diff 可能不适用。此时可用 cmp 命令:
cmp file1.bin file2.bin
它会报告第一个不同字节的位置。加上 -l 参数可列出所有不同之处。
图形化或高亮显示差异(可选工具)
如果系统安装了 colordiff 或 wdiff,可以让输出带颜色或按词比对:
- colordiff file1.txt file2.txt:彩色显示 diff 结果
- wdiff -n file1.txt file2.txt:按单词级别比对
这些工具需额外安装,但在排查细微文本变化时非常有用。
基本上就这些。掌握 diff 和 cmp 就能满足大多数文件比对需求,配合选项还能适应不同场景。关键是根据文件类型选择合适工具,再用参数过滤无关差异。


