本文整理了第三周课程有关文件比较的笔记
相关命令
cmp
该命令用法为:cmp file1 file2
该命令会逐字节比较两个文件的内容,当文件内容完全相同的时候,不给出任何的提示,也就是没有输出;当文件不同时,输出第一个不同的位置。
(此命令类似Windows中的COMP命令)
例:
有以下文件:
1 | cat test1.txt |
文件test1.txt和test2.txt内容相同
1 | cmp test1.txt test2.txt |
文件test1.txt和test3.txt内容不同
1 | cmp test1.txt test3.txt |
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值
1 | md5sum test1.txt test2.txt test3.txt |
验证文件的完整性
1 | md5sum test1.txt test2.txt test3.txt > test.sum |
diff
此命令用于找出两个文件的差别
基本用法:
diff file1 file2
使用normal格式输出diff -u file1 file2
使用unified格式输出
使用normal输出格式,将列出一个如何将file1转换成file2的指令,具体指令如下:
- a — add 添加
- c — change 改变
- d — delete 删除
指令字母左边的行号是file1的行号,右面是file2的行号,列出内容的时候,大于号>
右边的内容是需要在file1文件中增加的内容;小于号<
右边的内容是需要从file1文件中删除的内容
举个例子:
现有以下文件:
1 | cat 1.txt |
使用diff命令得到输出:
1 | diff 1.txt 2.txt |
删除文件file1第3行的内容Lee
可得到文件file2的第2行,对应指令为:
1 | 3d2 |
在文件file1的第4行添加内容abc
可以得到文件file2的第4行,对应指令为:
1 | 4a4 |
修改文件file1的第6行可变为file2的第6,7行,对应指令为:
1 | 6c6,7 |
至于unified格式,这种格式和git版本管理使用的文件比较的输出类似,不详谈。
重要应用:基于文件比较可以实现版本管理系统