Linux - diff-md5sum-patch
目录
diff命令
diff - compare files line by line
比较两个文件之间的差异
输出结果为两个文件的不同之处
输出格式:
标准diff
-u : 会将不同的地方放在一起,紧凑易读
-r : 递归比较目录下的所有文件
如果比较的两个文件没有差异,内容一样的话,不会有输出
[root@localhost lianxi]# diff abc.txt abc_backup
如果两个文件有不同的地方的话,会输出这两个文件的不同之处
[root@localhost lianxi]# diff passwd passwd_backup
25a26,28
123fasef
fef
fe
############################################################################
-u选项 : 会将不同的地方放在一起,紧凑易读
[root@localhost script]# diff -u phone.txt phone.txt.bak
--- phone.txt 2022-02-27 14:59:26.245158132 +0800
+++ phone.txt.bak 2022-02-27 19:58:46.058772196 +0800
@@ -1,7 +1,7 @@
xiaomi
XIAOMI
huawei
-HUAWEI OPPO vivo
+hUAWEI OPPO vivo
VIVO
-apple meizu kupai
+apple meizu kuPai
nokia
############################################################################
还可以通过查看diff命令的返回值来确定文件是否被修改
如果文件之间有差异的话,命令的返回值会是非0
如果文件之间没有差异,是一样的话,命令的返回值是0
[root@localhost script]# diff -u phone.txt phone.txt.bak
--- phone.txt 2022-02-27 14:59:26.245158132 +0800
+++ phone.txt.bak 2022-02-27 19:58:46.058772196 +0800
@@ -1,7 +1,7 @@
xiaomi
XIAOMI
huawei
-HUAWEI OPPO vivo
+hUAWEI OPPO vivo
VIVO
-apple meizu kupai
+apple meizu kuPai
nokia
[root@localhost script]# echo $?
1
[root@localhost script]# cp phone.txt phone.txt.bak
cp:是否覆盖phone.txt.bak? y
[root@localhost script]# diff -u phone.txt phone.txt.bak
[root@localhost script]# echo $?
0
############################################################################
利用diff命令生成补丁
diff -u test1 test2 > test.patch
将两个文件之间的差异重定向给一个补丁文件
[root@localhost script]# diff -u phone.txt phone.txt.bak > test.patch
############################################################################
patch命令
用途:用来打补丁修补文件
格式:patch [选项]原始文件 < 补丁文件
-------------------
补丁:程序更新了的部分
程序是人编写的,有漏洞
发现漏洞以后,需要编写弥补这个漏洞的程序 --》 这个漏洞程序就是补丁
-----------------------
文件生成补丁:
生成补丁:
[root@localhost script]# diff -u singers.sh singers_v2.sh >sing.patch
============================================================================
[root@localhost script]# cat sing.patch
--- singers.sh 2022-02-24 13:20:23.750725966 +0800
+++ singers_v2.sh 2022-02-27 20:13:21.309321889 +0800
@@ -18,3 +18,4 @@
singers=($(echo ${singers[*]}))
done
+echo 点歌完毕
[root@localhost script]# patch
-bash: patch: 未找到命令
============================================================================
默认最小安装没有patch命令,所以需要我们自己安装一下
打补丁:
[root@localhost script]# patch singers.sh < sing.patch
patching file singers.sh
[root@localhost script]# diff singers.sh singers_v2.sh
[root@localhost script]# echo $?
0
可以看到,在打完补丁以后,这两个脚本就没有差异了,
############################################################################
备份了一个文件,过了一段时间怎么知道是否被修改过了?
1.diff命令比较
2.访问·时间
3.md5sum
通过比较md5sum的值来确定文件是否被修改
根据文件内容计算出一个固定的值
如果文件修改了,里面的内容发生了变化,计算出来的值就会发生变化
[root@localhost script]# md5sum phone.txt
9293e6ed02d3624ff6791fee1672e29d phone.txt
[root@localhost script]# md5sum phone.txt.bak
4cecf63a29185970979b6587bb144c68 phone.txt.bak
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通