> 文本处理与搜索 > cmp

cmp: 逐字节比较两个文件

cmp 命令逐字节比较两个文件,并报告文件不同的第一个位置和行号。它对于快速检查二进制文件或文本文件是否匹配非常有用。

概述

cmp 是一个比 diff 命令简单得多的比较工具。diff 详细地逐行显示文件之间的差异,而 cmp 仅输出“两个文件不同”的事实,以及差异出现的第一个位置(字节偏移量)和行号。因此,当您只需要检查文件(如配置文件或二进制文件)是否匹配,而无需查看其完整内容时,它非常有效。

主要特点

cmp 命令的主要特点如下:

  • 逐字节比较文件。
  • 仅输出第一个差异的位置和行号。
  • 输出简洁,适用于脚本中检查文件是否匹配。
  • 特别适用于二进制文件比较。

与 diff 的区别

cmp 和 diff 都是文件比较工具,但在目的和输出方式上有所不同。

  • cmp: 逐字节比较,只报告第一个差异,适用于二进制文件比较。
  • diff: 逐行比较,详细报告所有差异,适用于文本文件比较。

主要选项

根据用途对常用的 cmp 命令选项进行了分组。

1) 比较选项

2) 帮助

生成的命令:

请尝试组合命令。

描述:

`cmp` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 cmp 命令的各种使用示例来熟悉其功能。

比较两个文本文件

echo 'Hello World' > file1.txt
echo 'Hello World' > file2.txt
cmp file1.txt file2.txt

比较两个相同的文本文件时,不会输出任何内容。

比较两个不同的文本文件

echo 'Hello World' > file1.txt
echo 'Hello, World' > file2.txt
cmp file1.txt file2.txt

如果文件内容不同,则输出第一个差异的字节位置和行号。

比较二进制文件

cmp /bin/ls /bin/cmp

简单地检查二进制文件是否匹配。如果没有输出,则文件相同。

在脚本中使用

cmp -s file1.txt file2.txt && echo '文件相同。' || echo '文件不同。'

使用 cmp 的退出代码根据文件是否匹配进行分支处理。

退出代码

cmp 通过退出代码报告比较结果,因此非常适合在脚本中使用。

cmp 退出状态值
代码 含义
0 两个文件相同
1 两个文件不同
2 无法访问的文件或选项错误

安装

cmp 作为 `diffutils` 包的一部分,预装在大多数 Linux 发行版中。无需额外安装。

提示与注意事项

总结了使用 cmp 命令时需要注意的事项。

提示

  • cmp 最适合用于二进制文件比较。要查看文本文件的内容差异,建议使用 `diff`。
  • 使用 `cmp -s` 选项时没有输出,方便在脚本中与 `if` 语句或 `&&`/`||` 运算符一起使用。
  • 字节位置从 1 开始,`cmp -l` 输出的字节值是八进制表示。

相关命令

功能上相似或经常一起使用的命令。


相同类别命令