cmp.1

CMP(1)

CMP(1)

FreeBSD General Commands Manual

CMP(1)

cmp

compare two files

cmp [-l | -s | -x] [-hz] file1 file2 [skip1 [skip2]]

cmp 实用程序比较任何类型的两个文件并将结果写入标准输出。默认情况下,如果文件相同,则 cmp 是静默的;如果它们不同,则报告出现第一个差异的字节和行号。

字节和行从一开始编号。

可以使用以下选项:

-h

不要跟随符号链接。

-l, --verbose

打印每个差异的字节数(十进制)和不同的字节值(八进制)。

-s, --silent, --quiet

不打印不同文件;仅返回退出状态。

-x

-l 类似,但以十六进制打印并使用零作为文件中第一个字节的索引。

-z

对于常规文件,首先比较文件大小,如果不相等则比较失败。

可选参数 skip1 和 skip2 分别是从 file1 和 file2 开始的字节偏移量,比较将从这里开始。 默认情况下,偏移量是十进制的,但可以通过在其前面加上前导 “0x” 或 “0” 来表示为十六进制或八进制值。

cmp 实用程序以下列值之一退出:

0

这些文件是相同的。

1

文件不同;这包括一个文件与另一个文件的第一部分相同的情况。 在后一种情况下,如果未指定 -s 选项,则 cmp 将写入标准错误,即在较短的文件中已达到 EOF(在发现任何差异之前)。

>1

发生错误。

假设一个名为 example.txt 的文件具有以下内容:

a b c

将标准输入与 example.txt 进行比较:

$ echo -e "a\nb\nc" | cmp - example.txt

与上述相同,但在 stdin 的第三个字节中引入了更改。 显示字节数(十进制)和不同的字节(八进制):

$ echo -e "a\nR\nc" | cmp -l - example.txt 3 122 142

比较 example.txt 和 /boot/loader.conf 的文件大小,如果不相等则返回 1。 请注意, -z 只能用于常规文件:

$ cmp -z example.txt /boot/loader.conf example.txt /boot/loader.conf differ: size

比较 stdin 和 example.txt ,省略 stdin 的前 4 个字节和 example.txt 的前 2 个字节:

$ echo -e "a\nR\nb\nc" | cmp - example.txt 4 2

diff(1), diff3(1)

cmp 实用程序应与 IEEE Std 1003.2 (“POSIX.2”) 兼容。 -h -、 -x-z 选项是标准的扩展。

在 Version 1 AT&T UNIX 中出现了 cmp 命令。

June 20, 2020

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区