diff用于逐行比较文本文件差异,适合查看配置或代码修改;cmp用于逐字节比较任意文件,常用于校验二进制文件一致性。

在Linux系统中,diff 和 cmp 是两个常用的文件比较工具,虽然功能相似,但用途和输出方式有明显区别。理解它们的使用场景和基本语法,有助于快速定位文件差异或验证文件一致性。
diff命令:逐行比较文本文件
diff 主要用于比较两个文本文件的内容差异,按行输出不同之处,适合查看源代码、配置文件等可读文本的变化。
基本语法:
diff file1 file2
常用选项:
- -b 忽略空格数量的差异
- -B 忽略空白行
- -i 忽略大小写
- -r 递归比较目录中的文件
- -u 输出统一格式(常用于生成补丁)
示例:
diff -u config.old config.new
该命令会输出类似版本控制系统的差异内容,可用于生成patch文件。
cmp命令:逐字节比较任意文件
cmp 按字节对比两个文件,适合判断二进制文件是否完全相同,或者查找第一个不同字节的位置。
篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: Git是分布式版本控制系统,与SVN类似的集中化版本控制系统相比,集中化版本控制系统虽然能够令多个团队成员一起协作开发,但有时如果中央服务器宕机的话,谁也无法在宕机期间提交更新和协同开发。甚至有时,中央服务器磁盘故障,恰巧又没有做备份或备份没及时,那就可能有丢失数据的风险。感兴趣的朋友可以过来看看
基本语法:
cmp file1 file2
常用选项:
- -l 显示所有不同字节的位置和值(十进制)
- -s 静默模式,仅通过退出状态判断是否相同
- -n 数量 最多比较指定字节数
示例:
cmp -l image1.jpg image2.jpg
如果文件不同,会列出每个不一致字节的位置和对应的ASCII码值。
使用场景建议
选择哪个命令取决于你的需求:
- 想看文本文件哪里修改了,比如脚本或文档,用 diff
- 检查两个二进制文件是否完全一致,比如下载的镜像或压缩包,用 cmp
- 需要生成补丁或合并代码,优先使用 diff -u
- 脚本中做文件一致性校验,可用 cmp -s 配合 if 判断









