十一、diff和patch打补丁
diff制作补丁文件的原理:告诉我们怎么修改第一个文件后能得到第二个文件。
diff命令常用选项:
-u 输出统一内容的头部信息(打补丁使用),计算机知道是哪个文件需要修改 -r 递归对比目录中的所有资源(可以对比目录)
-a 所有文件视为文本(包括二进制程序) -N 无文件视为空文件(空文件怎么变成第二个文件)
patch -pnum(其中num为数字,指定删除补丁文件中多少层路径前缀)
如原始路径为/u/howard/src/blurfl/blurfl.c
-p0则整个路径不变 -p1则修改路径为u/howard/src/blurfl/blurfl.c -p4则修改路径为blurfl/blurfl.c
-R(reverse)反向修复 -E修复后如果文件为空,则删除该文件
patch对单文件代码打补丁
[root@proxy ~]# cd demo
[root@proxy demo]# vim test1.sh //v1版本脚本
#!/bin/bash
echo "hello world"
echo "test"
[root@proxy demo]# vim test2.sh //v2版本脚本
#!/bin/bash
echo "hello the world"
echo "test file"
[root@proxy demo]# diff -u test1.sh test2.sh > test.patch //diff生成补丁文件
[root@proxy demo]# yum -y install patch //安装patch软件包
[root@proxy demo]# patch -p0 < test.patch //在代码相同目录下为代码打补丁
patching file test1.sh
[root@proxy demo]# patch -RE < test.patch //还原旧版本,反向修复
patch对目录下的所有代码打补丁
[root@proxy ~]# mkdir demo
[root@proxy ~]# cd demo
[root@proxy demo]# mkdir {source1,source2}
[root@proxy demo]# echo "hello world" > source1/test.sh //source1目录及文件
[root@proxy demo]# cp /bin/find source1/
[root@proxy demo]# tree source1/ //source1目录下2个文件
|-- find
`-- test.sh
[root@proxy demo]# echo "hello the world" > source2/test.sh //source2目录及文件
[root@proxy demo]# echo "test" > source2/tmp.txt
[root@proxy demo]# cp /bin/find source2/
[root@proxy demo]# echo "1" >> source2/find
[root@proxy demo]# tree source2/ //source1目录下3个文件
|-- find
|-- test.sh
`-- tmp.txt
[root@proxy demo]# diff -Nuar source1/ source2/ > source.patch //生成补丁
[root@proxy demo]# ls
source1 source2 source.patch
[root@proxy demo]# cat source.patch //对比的文件有路径信息
--- source1/test.sh 2018-02-07 22:51:33.034879417 +0800
+++ source2/test.sh 2018-02-07 22:47:32.531754268 +0800
@@ -1 +1 @@
-hello world
+hello the world
[root@proxy demo]# cd source1
[root@proxy source1]# patch -p1 < ../source.patch
十一、diff和patch打补丁的更多相关文章
- diff和patch 打补丁
在Linux环境下,有两个工具用来给project打补丁,即diff和patch diff diff具有比较功能.可以使用man命令查看其使用方法. NAME diff ...
- [daily] 使用diff和patch打补丁
diff org new > xxx.patch patch /path/org xxx.patch /path/org是相对路径时, 会报错. 这是一个bug.
- diff生成补丁与patch打补丁
1.使用diff生成补丁: diff是Linux下的文件比较命令,参数这里就不说了,直接man一下就行了,不仅可以比较文件,也可以比较两个目录,并且可以将不同之处生成补丁文件,其实就是一种打补丁的命令 ...
- patch 打补丁,和diff 生成制作补丁
一.diff 命令: diff命令就是比较两个文件的差异,然后生成差异文件,即补丁文件. 参数:diff --help获得,最常用的 1.-N --new-file 在比较时,如果没有就拿一个空的文件 ...
- git apply、git am打补丁.diff 和 .patch【转】
本文转载自:https://www.jianshu.com/p/e5d801b936b6 前提: 生成patch: git format-patch -M master 生成指定patch,0163b ...
- diff和patch的使用、patch文件的格式解说
为了弄懂 patch中的 p0 p1 和.orig文件是啥,找到了这篇文章! 来源:http://www.cnblogs.com/super119/archive/2010/12/18/19 ...
- 【转】Linux下patch打补丁命令
[转]Linux下patch打补丁命令 转自:http://www.cnblogs.com/noaming1900/archive/2010/10/28/1863282.html 此命令用于为特定软件 ...
- Linux下patch打补丁命令
此命令用于为特定软件包打补丁,他使用diff命令对源文件进行操作. 基本命令语法: patch [-R] {-p(n)} [--dry-run] < patch_file_name p:为pat ...
- 关于 diff 和patch
参考: https://blog.csdn.net/zygblock/article/details/53384862 diff和patch是 版本控制 git 的不可缺少的工具 diff 是用来比较 ...
随机推荐
- 【】POST、GET、RequestParam、ReqestBody、FormData、request payLoad简单认知
背景: 使用vue+axios方式代替ajax后向后台发送数据出现问题了,controller获取不到数据.然后查.找.查.找中似乎找到一些门道.以下列出总结性的东西来记录自己的思考成果,仅供参考,不 ...
- Error starting userland proxy: /forwards/expose/port returned unexpected status: 500.
欢迎关注微信公众号 Error starting userland proxy: /forwards/expose/port returned unexpected status: 500. dock ...
- VS“无法查找或打开PDB文件”解决方法
``#运行时报错提示 "温度柱状图.exe"(Win32): 已加载"C:\Windows\SysWOW64\rpcrt4.dll".无法查找或打开 PDB 文 ...
- js EventSource 长链接
有这么一个场景:服务端处理数据,响应比较慢,为了不让用户体会到网页没有反应,服务端需要把处理的每一步操作返回给前端,前端实时进行打印. 1.ajax 轮询 <script> setInte ...
- input type
input的type有: text 文本输入 password密码输入 file选择文件 radio单选按钮 checkbox复选按钮 submit对应form的action按钮 button 普通按 ...
- 快速熟悉windows操作
快捷键 win + E : 打开我的电脑 Ctrl+Shift+Esc:打开资源管理器 Alt +F4 :关闭当前窗口 Win + R:打开命令窗口 DOS 命令 打开CMD 的方式 Win+R:输入 ...
- 删除所有空白列 cat yum.log | awk '{$1=$2=$3=$4=null;print $0}'>>yum.log1 sed ‘s/[ \t]*$//g' 删除所有空格 sed -i s/[[:space:]]//g yum.log
2.删除行末空格 代码如下: 删除所有空白列 cat yum.log | awk '{$1=$2=$3=$4=null;print $0}'>>yum.log1 sed 's/[ \t]* ...
- 《SystemVerilog验证-测试平台编写指南》学习 - 第3章 过程语句和子程序
<SystemVerilog验证-测试平台编写指南>学习 - 第3章 过程语句和子程序 3.1 过程语句 3.2 任务.函数以及void函数 3.3 任务和函数概述 3.4 子程序参数 3 ...
- C语言中位运算异或“∧”的作用
1.概念异或运算符"∧"也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即 0∧0=0,0∧1=1, 1^0=1,1∧1=0.运算 ...
- #undef 与 exit(0) 使用
#undef 与 #defined 反,实际使用中较多的是当你需要使用自己定义的标准C里面已经的函数时可以这样操作: exit(0)和exit(1)是系统判断函数是否有正常的退出,一般0表示正常的退 ...