Linux - diff-md5sum-patch

目录

diff命令

-u : 会将不同的地方放在一起,紧凑易读

-r : 递归比较目录下的所有文件

-u选项 : 会将不同的地方放在一起,紧凑易读

还可以通过查看diff命令的返回值来确定文件是否被修改

利用diff命令生成补丁

patch命令

生成补丁:

打补丁:

备份了一个文件,过了一段时间怎么知道是否被修改过了?

3.md5sum


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

posted @   JackLovey3  阅读(7)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示