其实patch在具体使用的时候是不用指定原文件的,因为补丁文件中都已经记载了原文件的路径和名称。patch足够聪明可以认出来。但是有时候会 有点小问题。比如一般对两个目录diff的时候可能已经包含了原目录的名字,但是我们打补丁的时候会进入到目录中再使用patch,着个时候就需要你告诉 patch命令怎么处理补丁文件中的路径。可以利用-pn开关,告诉patch命令忽略的路径分隔符的个数。

举例如下:

A文件在 DIR_A下,修改后的B文件在DIR_B下,一般DIR_A和DIR_B在同一级目录。我们为了对整个目录下的所有文件一次性diff,我们一般会到DIR_A和DIR_B的父目录下执行以下命令

diff -rc DIR_A DIR_B > C

怎么理解上面这段话呢?我们来看下面这个语句,a/bin/minindn是一个目录,下面有很多文件,b/bin/minindn也是一个目录,下面有很多文件

diff --git a/bin/minindn b/bin/minindn

这时候,我们就会在bin目录下,进行diff动作,来以此达到对minindn整个目录下的所有文件的一次性diff。

这个时候补丁文件C中会记录了原始文件的路径为 DIR_A/A

现在另一个用户得到了A文件和C文件,其中A文件所在的目录也是DIR_A。 一般,他会比较喜欢在DIR_A目录下面进行patch操作,它会执行

patch < C

但是这个时候patch分析C文件中的记录,认为原始文件是./DIR_A/A,但实际上是./A,此时patch会找不到原始文件。为了避免这种情况我们可以使用-p1参数如下

patch -p1 < C

此时,patch会忽略掉第1个”/”之前的内容,认为原始文件是 ./A,这样就正确了。

最后有以下几点注意:

  1. 一次打多个patch的话,一般这些patch有先后顺序,得按次序打才行。
  2. 在patch之前不要对原文件进行任何修改
  3. 如果patch中记录的原始文件和你得到的原始文件版本不匹配(很容易出现),那么你可以尝试使用patch, 如果幸运的话,可以成功。大部分情况下,会有不匹配的情况,此时patch会生成rej文件,记录失败的地方,你可以手工修改。

打补丁文件时候patch -p1命令的含义相关推荐

  1. linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch

    diff(differential) 功能说明:比较文件的差异. 语 法:diff [-abBcdefHilnNpPqrstTuvwy][-;][-C ;][-D ;][-I ;][-S ;][-W ...

  2. 使用patch给代码打补丁,快速高效、patch -p1 和p0 的区别

    生成patch: git diff > file.patch 打patch: patch -p1 < file.patch git apply file.patch 说到patch命令,就 ...

  3. patch -p1 和p0 的区别

    生成patch git diff > file.patch 打patch patch -p1 < file.patch git apply file.patch 说到patch命令,就不得 ...

  4. diff (制作补丁)和 patch(添加补丁) 的简介及简单使用

    diff是Linux系统的一个很重要的工具程序,我们通常用diff对同一软件(或程序)的不同版本的文件进行对比查看.不过,你不要用diff去比较两个完全不相干的文件,因为那样是比不出结果来的. dif ...

  5. 补丁分发 linux,patch 命令应用补丁

    patch 命令应用补丁 (1. 单个文件应用补丁 进入文件所在的目录并调用 patch 命令: patch < original.patch 这个命令需要源文件指定了参数  -u ,也就是讲, ...

  6. linux -- patch补丁文件以及相关内容

    本文的目的是向Linux新手介绍一种无价的资源,Larry Wall的patch程序.patch是用来查找文件之间差异的GNU diff命令的一个接口:diff有很多选项,但是该命令最常用的用途是用来 ...

  7. patch diff 补丁文件

    diff 和 patch 是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上.在数学上说,diff就是对两个集合的差运算,patch就是对两个集合的和运算.在数学上我们 ...

  8. linux path 打补丁,Linux停patch打补丁命令

    [转]http://www.cnblogs.com/noaming1900/archive/2010/10/28/1863282.html 此命令用于为特定软件包打补丁,他使用diff命令对源文件进行 ...

  9. Linux下补丁包(.patch文件)制作及使用[u-boot示例]

    需求 移植 u-boot 时需要修改通用的 u-boot 源码,为了避免每次都去重复修改,直接使用 patch 包的形式. 制作补丁包 # 1.完成功能调试之后,在当前目录下执行 make distc ...

最新文章

  1. Spring(五):SpringStruts2Hibernate整合后,实现查询Employee信息
  2. 【Python基础】在pandas中使用数据透视表
  3. 太赞了!包邮送 60 本 Python 畅销书!
  4. 「每天一道面试题」如何理解方法的重载与覆盖?
  5. Android 2017-2018面试题详解
  6. VSCode在文件顶部添加作者,时间和注释等信息
  7. vue3.0+ts+element-plus多页签应用模板:侧边导航菜单(下)
  8. 7-4 走迷宫II(Dijkstra 算法)
  9. 混沌工程(Chaos Engineering) 总结
  10. 新增电子信息专硕,中外合作办学!南京信息工程大学
  11. Android系统应用开发
  12. Vue3+elementplus搭建通用管理系统实例十五:界面美化及样式调整
  13. AI的艺术创造力超越人类?绝不是痴人说梦
  14. CASS地物及地貌的诠释
  15. 数字识别digits.png研究2
  16. springMVC+mysql实现的Java web医院分诊挂号管理系统源码附带论文及视频指导运行教程
  17. 震惊!xpath定位不到对应元素节点
  18. android 实现FTP文件上传
  19. 在网上开期货账户优势很大
  20. 正阅读微信小说分销系统-教程-如何申请模板消息

热门文章

  1. Nevron 3DChart创建有吸引力的3D和2D图表
  2. 高端运动耳机哪个品牌最好、最好的运动耳机品牌排行
  3. 2021-6月面试总结-vue,uniapp,小程序,h5,更新中
  4. autoexec.bat文件的所在位置
  5. ensp路由器启动显示错误40
  6. SharePoint 2010 Webpart 部署 报错的解决方法
  7. [XJTUSE]计算机图形学第二章作业,使用OpenGL编程实现DDA、中点画线和Bresenham算法和中点画圆法
  8. 华硕笔记本电脑开机进入bios
  9. HTML+CSS大风车及十字架的实现
  10. 拆解任天堂教科书般的界面动效设计