Shell脚本中的常用命令-----diff和patch
1.diff命令的用法
diff 参数 对象一 对象二
以后面的对象作为标准,去比较前面的对象相对于后面对象来说有什么不同。
< ##表示第一个对象的内容
> ##表示第二个对象的内容
a ##表示添加
c ##表示更改
d ##表示删除
常用参数:
-b ##表示忽略空格
-B ##表示忽略空行
-i ##忽略大小写
-c ##显示文件所有内容并标识不同
-r ##对比目录时加 -r
-u ##合并输出
当两个文件中有很多行时,进行比较不同时,为了方便我们可以用
[root@rhel8_node1 mnt]# vimdiff file1 file2
2 files to edit
可以看出,不同之处会特殊标记出来
[root@rhel8_node1 mnt]# touch file1 file2 ##在/mnt/目录下建立文件file1,file2
[root@rhel8_node1 mnt]# ls ##显示,文件建立成功
file1 file2
[root@rhel8_node1 mnt]# vim file1 ##编辑文件file1内容
[root@rhel8_node1 mnt]# vim file2 ##编辑文件file2内容
[root@rhel8_node1 mnt]# cat file1 ##查看文件file1内容
hello
westos
[root@rhel8_node1 mnt]# cat file2 ##查看文件file2内容
hello
redhat
[root@rhel8_node1 mnt]# diff file1 file2 ##比较文件的不同之处,使文件内容一致
2c2 ##表示第一个文件第二行的内容要经过更改变成第二个文件的第二行,c表示更改
< westos ##表示第一个文件中的内容westos
---
> redhat ##表示第二个文件中的内容redhat
[root@rhel8_node1 mnt]# diff file2 file1
2c2
< redhat
---
> westos
[root@rhel8_node1 mnt]# vim file1 ##修改file1 内容于file2 内容一致
[root@rhel8_node1 mnt]# cat file1
hello
redhat
[root@rhel8_node1 mnt]# diff file1 file2 ##再次比较后,发现文件内容一致
[root@rhel8_node1 mnt]# diff file2 file1
[root@rhel8_node1 mnt]#
注意:比较时,是针对于后面的对象作为参考
测试:
c表示更改
a表示添加
d表示删除
-b 表示忽略空格
-B 表示忽略空行
-c 表示显示文件所有内容并标识不同
-i 表示忽略大小写
-r 表示对比目录
-u 表示合并输出
2.patch命令的用法
patch 原文件 布丁文件
-b ##备份原文件
首先安装打补丁的工具
注意:如果不加-b参数,文件会被直接修改成指定文件内容,原文件内容会被覆盖。
加了参数-b之后
可以看到,生成了文件 file1.orig ,这就是原文件,所以切记在打补丁的时候加参数-b