patch 的用法简单介绍

鉴客 发布于 2010/11/24 10:49
阅读 795
收藏 1

原文地址 http://www.ibm.com/developerworks/cn/linux/l-diffp/index.html

1.diff

 diff以"行"为单位比较两个文本文件(也可以是目录比较),并将不同之处以某种格式输出到标准输出上;patch可以读入这种输出,并按照一定指令使源文件(目录)按照目标文件(目录)更新。
diff 既可以用来比较两个文件,也可以用来比较两个目录中每个文件。使用-r(--recursive)参数时还可以在目录中嵌套比较。比较目录时除比 较同名文件外,对不同名的文件当成新文件处理。对于比较C程序文件,diff还提供了专门的参数(-p,--show-c-function)来标识不同 之处所在的函数名。

新版格式较之老版要紧凑一些,Linux内核源码的升级就是按照新版上下文格式用diff组织的,比如patch-2.4.16中所用的具体命令为:

diff -Nur linux-2.4.15 linux

 

2.patch

尽管并没 有指定patch和diff的关系,但通常patch都使用diff的结果来完成打补丁的工作,这和patch本身支持多种diff输出文件格式有很大关 系。patch通过读入patch命令文件(可以从标准输入),对目标文件进行修改。通常先用diff命令比较新老版本,patch命令文件则采用 diff的输出文件,从而保持原版本与新版本一致。

对于刚才举的Linux内核源码2.4.16升级包的例子,假定源码目录位于/usr/src/linux中,则在当前目录为/usr/src时使用
"patch -p0 <patch-2.4.16"可以工作,在当前目录为/usr/src/linux时,"patch
-p1<patch-2.4.16"也可以正常工作。
加载中
0
xunxun
xunxun

diff把所有文件当成文本来比较比较好 加入a

diff -ruNa

0
xunxun
xunxun

patch -pN

N指忽略几级目录

返回顶部
顶部