概述
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 通过退出代码报告比较结果,因此非常适合在脚本中使用。
代码 | 含义 |
---|---|
0 | 两个文件相同 |
1 | 两个文件不同 |
2 | 无法访问的文件或选项错误 |
安装
cmp 作为 `diffutils` 包的一部分,预装在大多数 Linux 发行版中。无需额外安装。
提示与注意事项
总结了使用 cmp 命令时需要注意的事项。
提示
- cmp 最适合用于二进制文件比较。要查看文本文件的内容差异,建议使用 `diff`。
- 使用 `cmp -s` 选项时没有输出,方便在脚本中与 `if` 语句或 `&&`/`||` 运算符一起使用。
- 字节位置从 1 开始,`cmp -l` 输出的字节值是八进制表示。