cmp 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于文本处理命令族(见文本处理命令族)。它比 diff(见diff)更底层——按字节比,不是按行。
cmp 逐字节比较两个文件,告诉你"从第几个字节开始不一样"。适合二进制文件和"完全相同性"校验。
一、基本用法
bash
cmp file1 file2
# 相同:无输出,返回 0
# 不同:file1 file2 differ: byte 42, line 3默认只报第一个不同点的位置(字节号 + 行号),不展开内容。相同则静默、退出码 0,脚本里很好用(
if cmp -s a b; then ...)。
二、列出所有不同:-l
bash
cmp -l file1 file2 # 列出每一个不同字节:位置 字节值1 字节值2(八进制)
cmp -s file1 file2 # -s 静默,只靠退出码判断(脚本首选)
-l把所有不同字节都列出来(值以八进制显示),适合精细比对二进制。-s(silent)完全不输出,仅靠返回码(0 相同/1 不同)判断,写条件分支最干净。
三、与 diff 的区别
bash
diff a b # 行级:告诉你哪几行不同(文本友好)
cmp a b # 字节级:告诉你第几个字节不同(二进制友好)diff 看"行",适合文本找改动;
cmp看"字节",适合确认两个文件是否逐位一致(如校验拷贝后的二进制、镜像)。比较大型文件cmp遇到第一个不同就停,比 diff 快。
相关命令
一句话总结
cmp = 逐字节比较(比 diff 更底层):默认只报首个不同字节位置,-l 列全部不同(八进制值),-s 静默仅靠退出码(脚本判断相同性首选);与 diff(行级、文本友好)不同,cmp 适合二进制/逐位一致性校验,遇首不同即停更快。