Linux系统使用diff打补丁

Linuxnetos

Linux系统使用diff打补丁

diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
用法:
diff 选项  文件a  文件b
-a diff预设只会逐行比较文本文件。
-N 在比较目录时,若文件A仅出现在某个目录中,预设会显示:
-u  以合并的方式来显示文件内容的不同
-r 比较子目录中的文件
1.diff找出两个文件的不同
测试:
# cat a.txt
123
456
789
qwe
# cat b.txt
123
456
789
qwe
111
# diff -Naur a.txt b.txt
--- a	2020-04-26 14:23:32.284928637 +0800
+++ b	2020-04-26 14:24:47.845779972 +0800
@@ -2,3 +2,4 @@
 456 
 789
 qwe
+111   多了111
# diff -Naur a.txt b.txt >c.patch  #后缀名为patch

2.打补丁patch
-b   备份每一个原始文件
-p   设置欲剥离几层路径名称
-R  假设修补数据是由新旧文件交换位置而产生。
# patch -bp1 ./a.txt < ./c.patch
patching file a.txt
# cat a.txt
123 
456 
789
qwe
111
补丁已经打上了,由于加了参数-b所以生成了一个a.orig的文件,它是之前没有打补丁的源文件,确定好了后可以删除掉

3.补丁回滚
# patch -Rp1 a.txt <c.patch
patching file a.txt
# cat a.txt
123 
456 
789
qwe