linux中patch命令 -p 选项
patch命令和diff命令是linux打补丁的成对命令,diff 负责生产xxxxx.patch文件,patch命令负责将补丁打到要修改的源码上。但是patch命令的参数-p很容易使人迷惑,因为对-p 后面的数字理解不清晰,造成patch打不上,项目时间拖延,很是郁闷。后来仔细实践了一下,弄清楚了-p实际的含义。
举例说明更加容易看懂。比如有一个patch文件,名为drvAUDIO_if.patch,在/home/brinus/testdir/目录下。需要打补丁的源文件路径为/home/brinus/testdir/develop/.../drvAUDIO_if.h,develop为源码根目录,drvAUDIO_if.h为需要打patch的源码。那么patch命令的-p值取什么并不取决于源码根目录develop之前有多少级目录,而取决于从源码根目录develop到需要打patch的drvAUDIO_if.h的目录级数和patch文件中的路径级数的差值。也就是说,源码放在什么地方都无所谓,有所谓的是差值。
patch文件内容:
diff -U 10 -Naur output/619977/previousVersion///develop/include/Kangaroo/k3/drvAUDIO_if.h output/619977/currentVersion///develop/include/Kangaroo/k3/drvAUDIO_if.h --- output/619977/previousVersion///develop/include/Kangaroo/k3/drvAUDIO_if.h 2013-08-30 19:09:00.970605620 +0800
+++ output/619977/currentVersion///develop/include/Kangaroo/k3/drvAUDIO_if.h 2013-08-30 19:09:01.394607088 +0800
@@ -2817,44 +2817,48 @@
patch文件首有需要打patch的源码的的路径: output/619977/previousVersion///develop/include/Kangaroo/k3/drvAUDIO_if.h 源码根目录从develop到需要打patch文件的路径: develop/include/Kangaroo/k3/drvAUDIO_if.h 如果当前目录在/home/brinus/testdir/,即与源码根目录在同级目录下,patch命令应该为:
解释:testdir目录下有develop源码根目录,3的含义是去除patch文件首的指示路径“output/619977/previousVersion///develop/include/Kangaroo/k3/drvAUDIO_if.h”中的“output/619977/previousVersion/”,剩下的部分“develop/include/Kangaroo/k3/drvAUDIO_if.h” 与源码的路径完全一致,这样patch文件就可以根据具体行号及增(+)删(-)符号对源文件进行打patch。(注:“output/619977/previousVersion///”与“output/619977/previousVersion/”一样) 即: output/619977/previousVersion///develop/include/Kangaroo/k3/drvAUDIO_if.h
如果当前目录在/home/brinus/testdir/develop,patch命令应该为:
打patch成功会显示: patching file include/Kangaroo/k3/drvAUDIO_if.h Hunk #1 succeeded at 2156 (offset 12 lines). 打patch失败会显示: patching file develop/include/Kangaroo/k3/drvAUDIO_if.h Hunk #1 FAILED at 2144. 1 out of 1 hunk FAILED -- saving rejects to file develop/include/Kangaroo/k3/drvAUDIO_if.h.rej 如果当前目录是develop的话,那么这个路径是在当前目录下新建路径develop/include/Kangaroo/k3/drvAUDIO_if.h.rej,两个develop不是同一个目录。
linux中patch命令 -p 选项的更多相关文章
- linux中ls命令使用选项
ls:英文全名:List即列表的意思 -a 列出目录下的所有文件,包括以 . 开头的隐含文件.-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出.-c 输出文件的 i 节 ...
- Linux中监控命令top命令使用方法详解
收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就 ...
- 13 Basic Cat Command Examples in Linux(转) Linux中cat命令的13中基本用法
Cat (串联) 命令是Linux/Unix开源系统中比较常用的一个命令.我们可以通过Cat命令创建一个或多个文件,查看文件内容,串联文件并将内容输出到终端设备或新的文件当中,这篇文章我们将会以实例的 ...
- 12个 Linux 中 grep 命令的超级用法实例
12个 Linux 中 grep 命令的超级用法实例 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一 ...
- linux中grep命令的使用
转载:http://blog.csdn.net/universsky/article/details/8866402 linux中grep命令的使用 grep (global search regul ...
- linux中top命令的用法
收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就 ...
- Linux中grep命令的12个实践例子
grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和 ...
- Linux培训教程 linux中nl命令使用介绍
nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...
- Linux中exec命令相关
Linux中exec命令相关 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. b ...
随机推荐
- Ext.window的close的问题
以前每次都是用的hide,关闭后隐藏窗体,下一次点击再打开,这种方法在我的随笔里面有,可是现在遇到一个问题,我的窗体里面有个formpanel,formpanel每一项都有一个默认值,意思就是修改的时 ...
- zoj 3706 Break Standard Weight(dp)
Break Standard Weight Time Limit: 2 Seconds Memory Limit: 65536 ...
- log4net 快速上手使用
*本随笔仅限快速上手,如需深入探究,可查阅其它博友. 一.下载log4net.dll并添加引用; 二.添加配置文件 log4net.xml : <?xml version="1.0&q ...
- C++内存分配的五种方法
在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区.里面的变量通常是局部变量.函数参数 ...
- Java 编程下使用 Class.forName() 加载类
在一些应用中,无法事先知道使用者将加载什么类,而必须让使用者指定类名称以加载类,可以使用 Class 的静态 forName() 方法实现动态加载类.下面的范例让你可以指定类名称来获得类的相关信息. ...
- linux 终止用户会话
第一步使用 tty 命令 查看自己会话id:本例中会话id为1[root@localhost ~]# tty/dev/pts/1[root@localhost ~]# 第二步 使用 w 命令 查看当前 ...
- MVC5富文本编辑器CKEditor配置CKFinder
富文本编辑器CKEditor的使用 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- 使用CMD连接SQL Server
在CMD中操作数据库,界面不美观,而且排版不整齐,但在机器上没有安装SQLSERVER的时候,也是极其方便的. 在命令行中输入 OSQL ?可以获得所有帮助信息 osql -S 数据库服务 ...
- Code First 数据注释--InverseProperty 和 ForeignKey
ForeignKey 按照约定在Post类中看到BlogId属性,会认为是Blog类的外键,但是在Blog类中并没有BlogId属性,解决方法是,在 Post 中创建一个导航属性,并使用 Foreig ...
- 再入门JavaScript
从去年毕业到现今,工作不到一年.接触了3个实际项目,一个实训项目.却反而只有实训项目做的比较像样子. 重新又回到写脚本的岗位上,第一次真正意义上接触脚本应该是在达内培训时候李大神所引进,大神各种技术, ...