shell中常用的命令—diff和patch
1. diff用法
diff file1 fil2
以后面的文件file2作为标准 比较file1相对于file2来说有什么不同
<
表示第一个文件中的内容
>
表示第二个文件中的内容
a表示添加–add
c表示更改–change
d表示删除–delete
[root@node2 diff-patch]# cat file1
1234
haha
[root@node2 diff-patch]# cat file2
1234
hehexi
[root@node2 diff-patch]# diff file1 file2
2c2 #第一个文件的第二行要经过更改变成第二个文件的第二行
< haha #第一个文件中的haha
---
> hehexi #改成第二个文件中的hehexi
[root@node2 diff-patch]# diff file2 file1
2c2
< hehexi
---
> haha
[root@node2 diff-patch]# cat file1
12
hehexi
haha
[root@node2 diff-patch]# cat file2
1234
hehexi
[root@node2 diff-patch]# diff file2 file1
1c1
< 1234
---
> 12
2a3 #第一个文件的第二行要添加第二个文件的第三行
> haha
2.diff比较目录
diff -r /etc/ /tmp/
注意:比较的结果是目录中文件的不同 而不是文件内容的不同
3.patch用法
patch常用来打补丁
diff -u file2 file1
diff -u file2 file1 > file2.path #首先需要生成补丁文件
ls
patch file2 file2.path
yum instal; patch.x86_64 -y
patch file2 file2.path #再用patch命令打补丁
cat file2
cat file1
注意:用这种方法打补丁 文件会直接被修改成指定文件内容 原文件内容会被覆盖
要留下原文件内容:
cat file3
cat file1
diff -u file3 file1 >file3.path
patch -b file3 file3.path #-b表示保留原文件内容
ls
cat file3.orig #原文件内容