使用diff命令制作补丁、patch命令打补丁
2014-03-20 23:10
267 查看
1. diff命令常用来比较文件、目录,也可以用来制作补丁文件。所谓“补丁文件”就是“修改后的文件”与“原始文件”的差别。
常用的选项如下:
(1)“-u”:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位。
(2)“-r”:表示递归比较各个子目录下的文件。
(3)“-N”:将不存在的文件当作空文件。
(4)“-w”:忽略对空格的比较。
(5)“-B”:忽略对空行的比较。
例如:假设linux-2.6.22.6目录中是原始的内核,linux-2.6.22.6_ok目录是修改过的内核,可以使用以下命令制作补丁文件linux-2.6.22.6_ok.diff(原始目录在前,修改过的目录在后)。
$ diff -urNwB linux-2.6.22.6 linux-2.6.22.6_ok > linux-2.6.22.6_ok.diff
由于linux-2.6.22.6是标准的代码,可以从网上自由下载,要发布linux-2.6.22.6_ok中所做的修改时,只需要提供补丁文件linux-2.6.22.6_ok.diff 。
2. patch命令被用来打补丁——就是依据补丁文件来修改原始文件。比如对于上面的例子,可以使用以下命令将补丁文件linux-2.6.22.6_ok.diff应用到原始目录linux-2.6.22.6上去。假设linux-2.6.22.6_ok.diff和linux-2.6.22.6位于同一个目录下。
$ cd linux-2.6.22.6
$ patch -p1 < ../ linux-2.6.22.6_ok.diff
patch命令中最终要的选项是“-pn”:补丁文件中指明了要修改的文件的路径,“-pn”表示忽略路径中第n个斜线之前的目录。假设linux-2.6.22.6_ok.diff中有如下几行:
diff -urNwB linux-2.6.22.6/A/B/C.h linux-2.6.22.6_ok/A/B/C.h
--- linux-2.6.22.6/A/B/C.h 2007-08- 31 02:21:01.000000000 -0400
+++ linux-2.6.22.6_ok/A/B/C.h 2014-03- 20 22:39:51.000000000 -0400
……
使用上述命令打补丁时,patch命令根据“linux-2.6.22.6/A/B/C.h”寻找源文件,“p1”表示忽略第1个斜线之前的目录,所以要修改的源文件是当前目录下的:A/B/C.h 。
常用的选项如下:
(1)“-u”:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位。
(2)“-r”:表示递归比较各个子目录下的文件。
(3)“-N”:将不存在的文件当作空文件。
(4)“-w”:忽略对空格的比较。
(5)“-B”:忽略对空行的比较。
例如:假设linux-2.6.22.6目录中是原始的内核,linux-2.6.22.6_ok目录是修改过的内核,可以使用以下命令制作补丁文件linux-2.6.22.6_ok.diff(原始目录在前,修改过的目录在后)。
$ diff -urNwB linux-2.6.22.6 linux-2.6.22.6_ok > linux-2.6.22.6_ok.diff
由于linux-2.6.22.6是标准的代码,可以从网上自由下载,要发布linux-2.6.22.6_ok中所做的修改时,只需要提供补丁文件linux-2.6.22.6_ok.diff 。
2. patch命令被用来打补丁——就是依据补丁文件来修改原始文件。比如对于上面的例子,可以使用以下命令将补丁文件linux-2.6.22.6_ok.diff应用到原始目录linux-2.6.22.6上去。假设linux-2.6.22.6_ok.diff和linux-2.6.22.6位于同一个目录下。
$ cd linux-2.6.22.6
$ patch -p1 < ../ linux-2.6.22.6_ok.diff
patch命令中最终要的选项是“-pn”:补丁文件中指明了要修改的文件的路径,“-pn”表示忽略路径中第n个斜线之前的目录。假设linux-2.6.22.6_ok.diff中有如下几行:
diff -urNwB linux-2.6.22.6/A/B/C.h linux-2.6.22.6_ok/A/B/C.h
--- linux-2.6.22.6/A/B/C.h 2007-08- 31 02:21:01.000000000 -0400
+++ linux-2.6.22.6_ok/A/B/C.h 2014-03- 20 22:39:51.000000000 -0400
……
使用上述命令打补丁时,patch命令根据“linux-2.6.22.6/A/B/C.h”寻找源文件,“p1”表示忽略第1个斜线之前的目录,所以要修改的源文件是当前目录下的:A/B/C.h 。
相关文章推荐
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- patch 的用法
- How many times rampant Warcraft Star players ah
- Ubuntu 内核编译
- Mathcad patch
- 欺骗的艺术----(9)
- 一些比较生僻的 RPM 命令
- Jbuild2005安装
- rdesktop研究随笔
- office2003无法正常安装卸载问题解决
- 在WinCE5.0和WinCE6.0下,编译选项介绍
- [转]程序员的素养
- 又到了考评的时候
- 用access-list 对抗“冲击波”病毒
- CVS大全
- 在AS4上架设Cacti 0.8.6g
- git使用说明
- MPlayer-1.0pre6a的Bug和相应的patch
- Oracle 10.2.0.1 rolling upgrade oracle 10.2.0.5 by Logical Standby
- MATLAB-数据可视化笔记