文章目录
- 1. cmp 命令说明
- 2. cmp 命令语法
- 3. cmp 命令示例
- 3.1 不加参数
- 3.2 -b(显示不同的字节)
- 3.3 -i(跳过字节)
- 3.4 -l(显示所有不同)
- 3.5 -n(比较n个字节)
- 3.6 -s(不显示信息)
- 4. 总结
1. cmp 命令说明
cpm(compare):比较两个文件是否完全一致,基本信息如下:
Usage: cmp [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]
Compare two files byte by byte.
-b --print-bytes Print differing bytes.
-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input.
-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2
Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2.
-l --verbose Output byte numbers and values of all differing bytes.
-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes.
-s --quiet --silent Output nothing; yield exit status only.
-v --version Output version info.
--help Output this help.
SKIP1 and SKIP2 are the number of bytes to skip in each file.
SKIP values may be followed by the following multiplicative suffixes:
kB 1000, K 1024, MB 1,000,000, M 1,048,576,
GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.
If a FILE is `-' or missing, read standard input.
Report bugs to <bug-gnu-utils@gnu.org>.
参数如下:
选项 | 作用 |
---|---|
-b | 显示不同的字节 |
-i | 跳过n个字节再比较 |
-l | 显示所有不同处 |
-n | 比较n个字节数量的内容 |
-s | 不显示任何信息 |
2. cmp 命令语法
cmp [选项] 文件1 文件2
3. cmp 命令示例
3.1 不加参数
不加参数时,会显示两个文件第一个不同
cmp 文件1 文件2
3.2 -b(显示不同的字节)
这个也是显示第1个不同的地方,不过信息详细一下,会显示不同的字节序号。
cmp -b 文件1 文件2
3.3 -i(跳过字节)
-i 后面加一个数字,表示跳过这些字节再进行比较,也只显示第1个不同的位置,并且是减去跳过的字节数的位置。
cmp -i n 文件1 文件2
3.4 -l(显示所有不同)
一个不同是一行数据
cmp -l 文件1 文件2
3.5 -n(比较n个字节)
这个参数适合大文件比较,也是只显示找到的第1个不同。
cmp -n 数字 文件1 文件2
3.6 -s(不显示信息)
单独这条命令是没有任何信息输出的
cmp -s 文件1 文件2
其他它的用途是要配合 if 语句使用的。例如 test.sh:
if cmp -s 1.log 1.log.bak
then
echo "没有差异"
else
echo "有差异"
fi
运行结果就是:没有差异
-s 具体的返回值如下,test2.sh:
cmp -s 1.log 1.log.bak
return_value=$?
echo "无差异返回值:"$return_value
cmp -s 1.log 2.log
return_value2=$?
echo "有差异返回值:"$return_value2
cmp -s 1.log 3.log
return_value3=$?
echo "异常返回值:"$return_value3
结果:
无差异返回值:0
有差异返回值:1
异常返回值:2
4. 总结
cmp 比较两个文件差异。