文章目录
1、diff 命令
-
diff 命令常用来比较文件、目录,也可以用来制作补丁文件。顾名思义,“补丁文件” 就是 “修改后的文件” 与 “原文件” 的差异。常用选项如下:
1 、“-u”:表示在比较结果中输出上下文的一些相同的行,这有利于人工定位;
2、“-r”:表示递归比较各个子目录下的文件;
3、“-N”:将不存在的文件当做空文件;
4、“-w”:忽略对空格的比较;
5、“-B”:忽略对空行的比较。 -
举例说明:
假设 linux-3.10.y 目录是原始的内核,linux-3.10.y_modify 目录是修改过的内核,可以使用以下命令制作补丁文件 linux-3.10.y_modify.diff(原始目录在前,修改过的目录在后):$ diff -urNwB linux-3.10.y linux-3.10.y_modify > linux-3.10.y_modify.diff
2、patch 命令
-
patch 命令是用来打补丁的——即依据补丁文件来修改原始文件。比如上边的例子,可以使用以下命令将补丁文件 linux-3.10.y_modify.diff 应用到原始目录 linux-3.10.y。将 linux-3.10.y_modify.diff 和 linux-3.10.y 放在同一个目录下:
$ cd linux-3.10.y $ patch -p1 < ../linux-3.10.y_modify.diff
-
patch 命令中最重要的选项是 “-pn”:补丁指明了要修改的文件路径,“-pn”表示忽略路径中第 n 个斜线之前的目录。假设 linux-3.10.y_modify.diff 中有如下的几行:
diff -urNwB linux-3.10.y linux-3.10.y/A/B/C.h linux-3.10.y_modify/A/B/C.h
— linux-3.10.y/A/B/C.h 2022-07-19 11:10:01.000000000 +0800
+++ linux-3.10.y/A/B/C.h 2022-07-11 15:23:05.000000000 +0800
… … -
使用上述命令打补丁时,patch 命令根据 “linux-3.10.y/A/B/C.h” 寻找源文件,“-p1” 表示忽略第一个斜线之前的目录,所以需要修改的源文件目录下的:A/B/C.h。