0. 基础知识:
0.1: diff用法:
语法:diff [选项] file1 file2
说明:该命令告诉用户,为了使两个文件 file1 和 file2 一致,需要修改它们的哪些行。
例1:
文件A内容:
1234567
Sam
0987654321
文件B内容:
Sam
10987654321
add
#diff a b
1d0
< 1234567
3c2,3
< 0987654321
---
> 10987654321
> add
说明:
字母 a、d 和 c 分别表示附加、删除和修改操作。字母(a、d和c)之前的行号是针对file1 的,其后面的行号是针对 file2 的.
在上述形式的每一行的后面跟随受到影响的若干行,以 “<” 打头的行属于第一个文件,以 “>” 打头的行属于第二个文件。
则上面结果的解释为:
1d0
<1234567
文件A的第1行, 文件B的第0行。d 表示删除。
< 表明第一个文件。
所以说:A要变化为B,,则需要删除(d)的第一行-(1234567)
3c2,3
< 0987654321
---
> 10987654321
> add
文件A的第3 行, 文件B的2,3行。c 修改
要A到B。需要修改A的第三行 0987654321 到10987654321,add.
例2:
#diff a b > c
将a 到 b 的升级文件放到c 里面。 a就是原始文件,b就是目标文件。c就是补丁文件。
0.2: patch用法:
用法:
patch [options] [originalfile [patchfile]]
but usually just
patch -pnum <patchfile>
通常使用:
#patch -p0 < patchfile
patchfile很容易理解,就是diff生成出的补丁文件。
那么-p0, -p1是什么意思呢?
patch会打开patchfile. 看diff的是哪2个文件,就会去找原始文件。例如:
diff -uNr linux-2.6.28/Makefile linux-2.6.28-tcc/Makefile
--- linux-2.6.28/Makefile
+++ linux-2.6.28-tcc/Makefile
则patch命令就会去找linux-2.6.28/Makefile。 但这个文件在哪个目录下呢?
-p0: 表示从当前目录去找linux-2.6.28,从这个目录内找到Makefile去做patch动作。
-p1: 表示忽略第一级目录linux-2.6.28,直接从当前目录去找Makefile去做patch动作。