Linux cmp ( compare ) 命令用于逐字节比对两个文件是否相同或存在差异。

cmp 命令的定义解释

cmp ( compare ) 命令用于逐字节比对两个文件是否相同或存在差异,如果相同不会有任何输出;如果不同则输出不同的位置(不同的字符在第几行,从文件开头的第几个字符)。cmp 命令至少输入一个文件名,如果不指定另一个文件或指定的的另一个文件名为 -(代表标准输入),则指令从标准输入中读取数据来对比比较。

cmp 命令语法

cmp [选项]... 文件1 [文件2 [跳过1 [跳过2]]]
  • [文件1]:第一个文件名,必须提供
  • [文件2]:可以不提供,不提供时从标准输入读取内容
  • [跳过1]:跳过第一个文件中的开头指定的字符数,从下一个字符开始对比比较,默认为 0
  • [跳过2]:跳过第二个文件中的开头指定的字符数,从下一个字符开始对比比较,默认为 0
  • 跳过: 可以附加以下后缀 kB (代表乘1000), K (代表乘1024), MB (代表乘1,000,000), M (代表乘1,048,576), GB (代表乘1,000,000,000), G (代表乘1,073,741,824), 往后还有 T, P, E, Z, Y.

cmp 命令使用示例

1、对比比较文件 file1.txtfile2.txt 是否存在差异:

cmp file1.txt file2.txt
输出:
file1.txt file2.txt 不同:第 53 字节,第 4 行

2、对比比较文件 file1.txt 和标准输入的内容是否存在差异:

cmp file1.txt
或
cmp file1.txt -
输入内容:
The cmp command in Linux/Unix stands for "compare".

Ctrl + D 结束标准输入。

输出:
file1.txt - 不同:第 1 字节,第 1 行

cmp 命令选项解释

如下给出了 Linux cmp 命令中所有选项的解释说明:

选项 解释说明
-b, print-bytes 输出显示不同的字节
-i, --ignore-initial=SKIP 从两个输入都跳过 SKIP 字节,开始比对比较
-i, --ignore-initial=SKIP1:SKIP2 第一个文件跳过SKIP1字节,第二个文件跳过SKIP2字节
-l, --verbose 输出字节数和不同的字节值
-n, --bytes=LIMIT 最多比较LIMIT字节
-s, --quiet, --silent 抑制所有正常输出,即:不输出正常信息
--help 显示帮助信息后退出
-v, --version 显示版本信息后退出

注意:长选项的强制参数对于短选项也是强制的。

结语

在本教程中我们介绍了如何使用 cmp ( compare ) 命令用于于逐字节比对两个文件是否相同或存在差异,如果相同不会有任何输出;如果不同则输出不同的位置(不同的字符在第几行,从文件开头的第几个字符)。cmp 命令至少输入一个文件名,如果不指定另一个文件或指定的的另一个文件名为 -(代表标准输入),则指令从标准输入中读取数据来对比比较。

该 cmp 命令可以在 Linux 系统中使用,也可以在 FreeBSD 系统中使用。