什么是patch

patch即补丁之意,记录文件中的不同,能够与文件进行整合,从而改变文件中的内容

如何制作patch

在Linux系统中提供了diff程序,可以使用diff程序,比较文件之间的不同从而制作出patch文件

  1. 在系统中(我用的是Ubuntu)创建diff文件夹,创建test1.txt,test2.txt
mkdir diff
vi test1.txt
vi test2.txt

test1.txt文件内容如下

aaaa

test2.txt文件内容如下

aaaa
bbbb
  1. 使用diff命令制作patch文件
diff -Naur test1.txt test2.txt > test.patch

之后在当前目录中会存在三个文件

test1.txt test2.txt test.patch

test.patch 文件的内容

--- test1.txt   -- ::33.530350672 +
+++ test2.txt -- ::54.326350260 +
@@ - +, @@
aaaa
+bbbb

diff参数解释
-N 在比较目录时如果某个文件只出现了一次,那么在比较不同时会默认和空文件比较
-a 将所有的文件都作为普通text(之比较文本文件)
-u 以合并的方式显示文件内容的不同
-r 如果是文件夹则进行递归进行比较

如何使用patch

  1. 准备好patch文件和原版本文件
    创建patch文件夹,将test1.txt 和test.patch文件拷贝进去
mkdir patch
cp test1.txt test.patch../patch/
  1. 执行patch命令
patch -p0 < test.patch

test1.txt文件内容如下

aaa
bbb

可以看到patch已经打进去了
参数介绍
patch命令中最常用的就是-pX这个参数
在上面我们注意到patch文件如下内容

--- test1.txt   -- ::33.530350672 +

此时我们的参数为-p0,此时patch 就会在当前目录下寻找test1.txt文件,如在在patch文件中是这样记录的

---a/b/test1.txt   -- ::33.530350672 +

那么-p0会在当前目录下寻找a目录,a目录下寻找b,之后在b中寻找test1.txt文件。
如果是 -p1,patch命令就会舍弃a,先寻找b再寻找test1.txt
如果是-p2 ,会舍弃a/b,直接寻找test1.txt
所以-pX中 X代表就是所要舍弃的层级目录
patch还有很多参数,但是-pX是最为常用的

patch的应用场景

patch多用于系统升级,只要有一个基础版本,以及基于这个版本的一些patch,就可以进行升级

转自

patch -p0 和patch -p1的區別 | 學步園 https://www.xuebuyuan.com/zh-hant/1166329.html

patch的学习和使用 - 简书 https://www.jianshu.com/p/1df286850317

patch命令用法 - 车子(chezi) - CSDN博客 https://blog.csdn.net/longintchar/article/details/74151042

patch的用法【转】的更多相关文章

  1. Patch

    http://www.cnblogs.com/cute/archive/2011/04/29/2033011.html zhezhelin diff和patch使用指南 diff和patch是一对工具 ...

  2. python3 mock

    mock的官网学习备忘录:官网地址https://docs.python.org/3/library/unittest.mock.html#quick-guide 1,安装 python3 unitt ...

  3. django的单元测试框架unittest、覆盖率

    django的单元测试 指定测试范围: 指定运行某些测试文件./manage.py test --pattern="tests_*.py" -v 2 运行所有测试文件./manag ...

  4. matlab中patch函数的用法

    http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...

  5. 十分钟掌握diff&patch用法

    作为程序员,了解diff&patch命令是非常必要的.比如说我们发现某个项目有bug代码,而自己又没有svn的提交权限,那么此时最合适的解决方法就是用diff命令做一个补丁发给项目成员.项目成 ...

  6. svn patch用法

    最近遇到了一个patch的使用场景: 有一个同事对源码做了一些修改,但是又不想将源码提交到SVN服务器,而我又想得到他所做的修改. patch的使用方法: 创建patch 在要导出“修改”的目录中,单 ...

  7. patch 用法

    diff -Nrua a b > c.patch 实例说明: --- old/modules/pcitable Mon Sep 27 11:03:56 1999 +++ new/modules/ ...

  8. patch用法 (转载)

    转载:http://shenze60.blog.163.com/blog/static/315747722009724113026896/ 首先介绍一下diff和patch.在这里不会把man在线文档 ...

  9. sort、uniq 、 join 、 comm、diff 、 patch 、df、du 和 time 命令的用法

    1 sort 命令 同文本文件打交道时,总避不开排序,那是因为对于文本处理任务而言,排序(sort)可以起到不小的作用.sort 命令能够帮助我们对文本文件和 stdin 进行排序操作.通常,它会结合 ...

随机推荐

  1. unittest使用

    unittest:单元测试框架主要包含四部分: 1.测试固件(test fixture): 定义:包含执行测试前的准备setUP().测试执行完后的清扫工作tearDown() 注意: setUp() ...

  2. 浅谈Python设计模式 - 单例模式

    本篇主要介绍一下关于Python的单例模式,即让一个类对象有且只有一个实例化对象. 一.使用__new__方法(基类) 要实现单例模式,即为了让一个类只能实例化一个实例,那么我们可以去想:既然限制创建 ...

  3. js中的attribute详解

    Attribute是属性的意思,文章仅对部分兼容IE和FF的Attribute相关的介绍.attributes:获取一个属性作为对象getAttribute:获取某一个属性的值object.getAt ...

  4. ViCANdo新版本发布(PART2)| XCP集成

            大家好,这是ViCANdo功能更新的第二篇,上一篇我们介绍了ViCANdo对PCL的集成,这一篇我们介绍ViCANdo工具支持的另外一个功能:XCP解析功能集成. 标定         ...

  5. Linux学习21-设置定时任务crontab

    前言 做自动化测试写的脚本需设置定时任务,在指定的时间去执行,这就需要用到定时任务.之前用jenkins可以在里面设置定时任务,很好用,其实不用jenkins,在linux上也可以用crontab做个 ...

  6. 常用Maven插件介绍(转载)

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...

  7. modbus-poll和modbus-slave工具的学习使用——环境搭建

    在modbus的学习工具中,非modbus-poll和modbus-slave莫属了,在电脑上模拟的过程中,两者缺一不可 ,当然还需要虚拟串口工具:Configure Virtual Serial P ...

  8. Haskell语言学习笔记(94)Enum Bounded

    Enum class Enum a where succ, pred :: a -> a toEnum :: Int -> a fromEnum :: a -> Int enumFr ...

  9. rsync提权

    介绍:Rsync是linux下一款数据备份工具,默认开启873端口 利用条件:rsync未授权 列出模板 rsync rsync://目标ip:873/ 列出模块src下的文件 rsync rsync ...

  10. Codeforces1114F Please, another Queries on Array?

    题目链接:http://codeforces.com/problemset/problem/1114/F 题意:序列$a$,有两种操作,1 区间里的数同时乘上$x$ 2 求区间的积的欧拉函数 线段树好 ...