什么是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. 首次使用DoNetCore EFCore DbFirst

    环境 Visual Studio 2017 开始搭建项目 1.在 Visual Studio 2017 中创建新项目 “文件”>“新建”>“项目” 从左侧菜单中选择“已安装”>“模板 ...

  2. php的多功能文件操作类

    本类为文件操作类,实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录,列出目录里的文件等功能,路径后面别忘了加"/" 创建指定路径下的指定文件 * @param s ...

  3. MySQL Case--优化OR语句踩坑记录

    问题描述 研发同事反馈某应用执行较慢,对应SQL为: UPDATE bs_serial_trac , LOCK_VALUE = '', UPDATE_USER = 'transSys' ' AND ( ...

  4. 【Code Tools】AB性能测试工具(二)

    一.测试Get请求 1.每次并发请求10个,总共1000个请求 ab -n -c https://www.baidu.com/ 2.指定Header参数 通过-H来指定 ab -n -c -H 'Ac ...

  5. 拿webshell方法汇总

    地址:https://blog.csdn.net/Breeze_CAT/article/details/80044676

  6. 多个线程分别顺序交替打印一种不同字符abcdefg(已实现随便多少个线程打印多少个字符,利用线程池实现多线程)

    下面实现多线程顺序打印字符"abcdefg": 实现Runnable接口: /** * @author: rhyme * @date: 2019-08-17 14:39 * @to ...

  7. spring的声明式事务和编程式事务

    事务管理对于企业应用来说是至关重要的,当出现异常情况时,它可以保证数据的一致性. Spring事务管理的两种方式 1.编程式事务 使用Transaction Ttempleate或者直接使用底层的Pl ...

  8. python获取参数列表

    def f(a=1, b=2, c=3): print(locals())#在函数内获取 #使用inspect模块,简单方便 python2.7: import inspectinspect.geta ...

  9. 【转】分布式事务,EventBus 解决方案:CAP【中文文档】

    [转]分布式事务,EventBus 解决方案:CAP[中文文档] 最新文档地址:https://github.com/dotnetcore/CAP/wiki 前言 很多同学想对CAP的机制以及用法等想 ...

  10. Codeforces Round #605 (Div. 3) E. Nearest Opposite Parity(最短路)

    链接: https://codeforces.com/contest/1272/problem/E 题意: You are given an array a consisting of n integ ...