[King@Fedora ~]$ cd
[King@Fedora ~]$
[King@Fedora ~]$ mkdir -p x/xx/xxx
[King@Fedora ~]$ rm -rf x
[King@Fedora ~]$ mkdir -pv x/xx/xxx
mkdir: 已创建目录 “x”
mkdir: 已创建目录 “x/xx”
mkdir: 已创建目录 “x/xx/xxx”
[King@Fedora ~]$
[King@Fedora ~]$ cd x/xx/xxx
[King@Fedora xxx]$ cat >> xxx1 << EOF
> 111111
> 111111
> EOF
[King@Fedora xxx]$ cat >> xxx2 << EOF
> 111111
> 222222
> EOF
[King@Fedora xxx]$
[King@Fedora xxx]$ diff -y xxx1 xxx2
111111 111111
111111 | 222222
[King@Fedora xxx]$
[King@Fedora xxx]$ ls
xxx1 xxx2
[King@Fedora xxx]$ diff -Nu xxx1 xxx2 > xxx.patch
[King@Fedora xxx]$ cat xxx.patch
--- xxx1 2009-12-19 22:28:26.582959182 +0800
+++ xxx2 2009-12-19 22:28:42.798928591 +0800
@@ -1,2 +1,2 @@
111111
-111111
+222222
[King@Fedora xxx]$
[King@Fedora xxx]$ cd ..
[King@Fedora xx]$ diff -Nu xxx/xxx1 xxx/xxx2 > xx.patch
[King@Fedora xx]$ cat xx.patch
--- xxx/xxx1 2009-12-19 22:28:26.582959182 +0800
+++ xxx/xxx2 2009-12-19 22:28:42.798928591 +0800
@@ -1,2 +1,2 @@
111111
-111111
+222222
[King@Fedora xx]$
[King@Fedora xx]$ cd ..
[King@Fedora x]$ diff -Nu xx/xxx/xxx1 xx/xxx/xxx2 > x.patch
[King@Fedora x]$ cat x.patch
--- xx/xxx/xxx1 2009-12-19 22:28:26.582959182 +0800
+++ xx/xxx/xxx2 2009-12-19 22:28:42.798928591 +0800
@@ -1,2 +1,2 @@
111111
-111111
+222222
[King@Fedora x]$
现将patch文件都拷贝到xxx目录下去。
[King@Fedora x]$ cp x.patch xx/xxx/
[King@Fedora x]$ cp xx/xx.patch xx/xxx/
[King@Fedora x]$
[King@Fedora x]$ cd xx/xxx
[King@Fedora xxx]$
[King@Fedora xxx]$ ls
x.patch xx.patch xxx1 xxx2 xxx.patch
patching file xxx1
[King@Fedora xxx]$ cat xxx1
111111
222222
[King@Fedora xxx]$ patch -RE < xxx.patch
patching file xxx1
[King@Fedora xxx]$ cat xxx1
111111
111111
[King@Fedora xxx]$ patch -p1 < xx.patch
patching file xxx1
[King@Fedora xxx]$ cat xxx1
111111
222222
[King@Fedora xxx]$ patch -RE < xxx.patch
patching file xxx1
[King@Fedora xxx]$ cat xxx1
111111
111111
[King@Fedora xxx]$ patch -p2 < x.patch
patching file xxx1
[King@Fedora xxx]$ cat xxx1
111111
222222
[King@Fedora xxx]$ patch -RE < x.patch
patching file xxx1
[King@Fedora xxx]$ cat xxx1
111111
111111
[King@Fedora xxx]$
结论证明: patch -p参数后面所带的数字,就是patch文件在开始,所剥离的目录数。比如
xxx.patch的开头是
--- xxx1 2009-12-19 22:28:26.582959182 +0800
+++ xxx2 2009-12-19 22:28:42.798928591 +0800
前面已经没有目录了,所以应该是patch -p0
--- xxx/xxx1 2009-12-19 22:28:26.582959182 +0800
+++ xxx/xxx2 2009-12-19 22:28:42.798928591 +0800
前面有一层目录,需要剥离一层目录,所以应该是patch -p1
--- xx/xxx/xxx1 2009-12-19 22:28:26.582959182 +0800
+++ xx/xxx/xxx2 2009-12-19 22:28:42.798928591 +0800
前面有两层目录,需要剥离两层目录,所以应该是patch -p2
有兴趣的朋友,可以试试把所有patch文件拷贝到x目录或者是xx目录下进行实验,结果是一样的。当然patch -p后面是不能带负数的。呵呵……