首先介绍一下diff和patch。在这里不会把man在线文档上所有的选项都介绍一下,那样也没有必要。在99%的时间里,我们只会用到几个选项。所以必须学会这几个选项。

1、diff

--------------------

NAME

diff - find differences between two files

SYNOPSIS

diff [options] from-file to-file

--------------------

简单的说,diff的功能就是用来比较两个文件的不同,然后记录下来,也就是所谓的diff补丁。

语法格式:

diff 【选项】 源文件(夹) 目的文件(夹)

就是要给源文件(夹)打个补丁,使之变成目的文件(夹),术语也就是“升级”。下面介绍三个最为常用选项:

-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。

-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。

-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。

常用命令,在某文件夹下,对比两个文件(夹):

diff -urN  [old_directory]  [new_directory]

2、patch

------------------

NAME

patch - apply a diff file to an original

SYNOPSIS

patch [options] [originalfile [patchfile]]

but usually just

patch -pnum

------------------

简单的说,patch就是利用diff制作的补丁来实现源文件(夹)和目的文件(夹)的转换。这样说就意味着你可以有源文件(夹)-->目的文件(夹),也可以目的文件(夹)-->源文件(夹)。下面介绍几个最常用选项:

-p0 选项要从当前目录查找目的文件(夹)

-p1 选项要忽略掉第一层目录,从当前目录开始查找。一般常用的命令是,在需要更新的文件夹下,输入:

patch -p1 <  [patch_file]

************************************************************

一些说明:

其一、关于参数p[num],常用的一般是p0和p1

--- old/modules/pcitable       Mon Sep 27 11:03:56 1999

+++ new/modules/pcitable       Tue Dec 19 20:05:41 2000

如果使用参数-p0,那就表示从当前目录找一个叫做old的文件夹,在它下面寻找modules下的pcitable文件来执行patch操作。

如果使用参数-p1, 那就表示忽略第一层目录(即不管old),从当前目录寻找modules的文件夹,在它下面找pcitable。这样的前提是当前目 录必须为modules所在的目录。而diff补丁文件则可以在任意位置,只要指明了diff补丁文件的路径就可以了。当然,可以用相对路径,也可以用绝 对路径。不过我一般习惯用相对路径。

其二、patch文件的结构

补丁头

补丁头是分别由---/+++开头的两行,用来表示要打补丁的文件。---开头表示旧文件,+++开头表示新文件。

一个补丁文件中的多个补丁

一个补丁文件中可能包含以---/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。

块是补丁中要修改的地方。它通常由一部分不用修改的东西开始和结束。他们只是用来表示要修改的位置。他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头。

块的缩进

块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的。

块的第一列

+号表示这一行是要加上的。

-号表示这一行是要删除的。

没有加号也没有减号表示这里只是引用的而不需要修改。

diffpatch升级_Linux diff创建补丁以及patch打补丁相关推荐

  1. Linux使用diff对比文件差异,生成补丁,patch打补丁

    目录 1.概述 2.使用diff对比单个文件差异 3.diff命令常用选项: 4.使用patch命令对单文件代码打补丁 5.对比目录中所有文件的差异 1.概述 程序是人设计出来的,总是会有这样那样的问 ...

  2. diff linux文件夹patch,diff 文件差异和patch打补丁工具

    一.操作文件说明 1.原始文件word1 文件内容如下: 再别康桥 徐志摩 轻轻的我走了, 正如我轻轻的来: 我轻轻的招手, 作别西天的云彩. ... . 2.目标文件word2 文件内容如下: 再别 ...

  3. linux下diff、patch制作补丁

    http://blog.csdn.net/goldfighter/article/details/6150309 学习资料的收集比较简单,方法一类似于这种初级问题网上资料非常丰富,google或者ba ...

  4. diff patch制作补丁打补丁

    对于开源源码修改过程中的必经阶段:对源码打补丁,总是不够精通,搜索了补丁的原理的详细过程,如下: 在移植或版本升级过程中,手动比对(用比对工具)转换是很费力的事情,特别是发生变化的文件非常多的情况下, ...

  5. diff和patch 打补丁

    在Linux环境下,有两个工具用来给project打补丁,即diff和patch diff          diff具有比较功能.可以使用man命令查看其使用方法. NAME        diff ...

  6. [daily] 使用diff和patch打补丁

    diff org new > xxx.patch patch /path/org xxx.patch /path/org是相对路径时, 会报错. 这是一个bug. 转载于:https://www ...

  7. SVN 打补丁 Apply Patch ***

    SVN补丁的方式,在不能连接服务器或者没有修改的权限,但是迫于形势,你又必须对这个文件进行修改,这时你就可以用Create patch创建补丁,然后把你创建的补丁发给项目人,或对此目录有写权限的工作人 ...

  8. oracle 虚拟补丁,趋势科技虚拟补丁(Virtual Patch)

    本帖最后由 vger520 于 2012-4-26 09:20 编辑 预先防止漏洞遭到攻击 Virtual Patch(虚拟补丁)实际案例 微软最近紧急通知系统管理员立即安装一个影响所有 Window ...

  9. SCCM2012升级SP1系列之配置管理SCCM2012④配置SCCM2012补丁分发

    4.4 配置SCCM 2012补丁分发(软件更新) 1) 环境要求 a) 如果SCCM和WSUS在同一台服务器上,配置简单.需要注意在安装WSUS时请选择WSUS的端口为8530,避免和SCCM客户端 ...

最新文章

  1. opencv+dlib人脸关键点检测cpp版
  2. 如何用好消息推送(JPush)为app拉新、留存、促活
  3. 网络:HTTP的请求方法
  4. RabbitMQ—性能测试
  5. Angular Jasmine 里一些常用概念学习笔记 - describe, it, beforeEach的用法
  6. 【渝粤教育】21秋期末考试成本会计10168k2
  7. 字母绝对值python怎么表示_【怎样求用字母表示的数的绝对值?】作业帮
  8. oracle数据库6月之后的数据,Oracle数据库SCN存在可能在2019年6月导致宕机问题
  9. 有了它,你还想用postman吗
  10. 这五款热门商用密码管理器中均存在缺陷,可导致用户凭证被盗
  11. 计算机设计思想 —— 总线
  12. python——redis
  13. C#读取或设置ScrollLock
  14. 33个网站足以使你成为一个天才
  15. 关于stm32通过can与epos控制器建立通信,从而控制Maxon电机运转并且实时检测电机参数
  16. catia v5r18 百度云_CATIA V5 R18全套的教程.pdf
  17. 华为研发模式演进历程
  18. Sublime 初始化
  19. 矩形碰撞公式,以前还做j2me时就用到的公式,为了方便查找,这里记一下
  20. 中国建筑设计行业市场调查研究及发展前景展望报告(2022-2028年)

热门文章

  1. XCTF-高手进阶区:Training-WWW-Robots
  2. Angular Universal 官网翻译
  3. localtunnel:本地端口的服务映射到公网
  4. 面试中常问的HTTP/1.0状态码
  5. OpenCV:Surface Matching 3D
  6. 安卓Java读取SD卡文本文件
  7. 31.CSS3变形效果【下】
  8. Vue.js学习系列(二十八)-- 计算属性(二)
  9. python处理进度条
  10. 数位DP CF 55D Beautiful numbers