Linux开发环境及应用·第三周·文件比较
本文整理了第三周课程有关文件比较的笔记
相关命令
cmp
该命令用法为:cmp file1 file2
该命令会逐字节比较两个文件的内容,当文件内容完全相同的时候,不给出任何的提示,也就是没有输出;当文件不同时,输出第一个不同的位置。
(此命令类似Windows中的COMP命令)
例:
有以下文件:
$ cat test1.txt
aasd
zxcaw
456
1234
as
$ cat test2.txt
aasd
zxcaw
456
1234
as
$ cat test3.txt
123
文件test1.txt和test2.txt内容相同
$ cmp test1.txt test2.txt
$
文件test1.txt和test3.txt内容不同
$ cmp test1.txt test3.txt
test1.txt test3.txt differ: byte 1, line 1
md5sum/sha1sum
md5sum和sha1sum命令分别使用md5和sha-1算法生成文件的hash值,其中md5sum生成16字节hash值,sha1sum生成20字节hash值,通过比较hash值是否相同即可判断文件内容是否相同。
使用方法(以md5sum为例):
md5sum file1 file2 file3 ...
计算文件的hash值md5sum file1 > test.sum
将生成的test.sum文件放到另一台计算机上运行命令:md5sum -c test.sum
即可验证文件file1的完整性
例:
计算上面提到的三个文件的hash值
$ md5sum test1.txt test2.txt test3.txt
d08a81eeaf86e095fa5fbbbcb6936344 test1.txt
d08a81eeaf86e095fa5fbbbcb6936344 test2.txt
ba1f2511fc30423bdbb183fe33f3dd0f test3.txt
验证文件的完整性
$ md5sum test1.txt test2.txt test3.txt > test.sum
$ md5sum -c test.sum
test1.txt: OK
test2.txt: OK
test3.txt: OK
diff
此命令用于找出两个文件的差别
基本用法:
diff file1 file2
使用normal格式输出diff -u file1 file2
使用unified格式输出
使用normal输出格式,将列出一个如何将file1转换成file2的指令,具体指令如下:
- a — add 添加
- c — change 改变
- d — delete 删除
指令字母左边的行号是file1的行号,右面是file2的行号,列出内容的时候,大于号>
右边的内容是需要在file1文件中增加的内容;小于号<
右边的内容是需要从file1文件中删除的内容
举个例子:
现有以下文件:
$ cat 1.txt
feather
feather
Lee
lee
feather
Linux
$ cat 2.txt
feather
feather
lee
abc
feather
LInux
hello
使用diff命令得到输出:
$ diff 1.txt 2.txt
3d2
< Lee
4a4
> abc
6c6,7
< Linux
---
> LInux
> hello
删除文件file1第3行的内容Lee
可得到文件file2的第2行,对应指令为:
3d2
< Lee
在文件file1的第4行添加内容abc
可以得到文件file2的第4行,对应指令为:
4a4
> abc
修改文件file1的第6行可变为file2的第6,7行,对应指令为:
6c6,7
< Linux
---
> LInux
> hello
至于unified格式,这种格式和git版本管理使用的文件比较的输出类似,不详谈。
重要应用:基于文件比较可以实现版本管理系统