diff和patch
diff
-u:the unified format会将不同的地方放在一起,紧凑易读 .
diff original.txt updated.txt

c表示在original文件中的m,n行的内容将要被updated文件中的内容替换。
a表示追加,这时左边的数字只能是一个数字,而不会是一个范围,表示向original文件中追加右侧数字表示内容。
d表示删除。左侧的数字可能是一个范围,表示要删除的内容,右侧是一个数字,表示如果没有被删除应该出现在updated文件的什么位置。也许有人觉得后边的数字是多余的,保留这个数字是因为补丁可以反向使用。<表示patch应当将这个标志后面的内容删除。>表示patch应当将这个标志后面的内容添加。
diff original.txt updated.txt > mypatch.patch
patch original.txt -i my patch.patch -o updated-1.txt
上下文补丁
观察之前diff给出的结果样式,对于需要替换的位置,仅仅给出了行号,如果文件突然新增了一个空行,补丁应用的时候就会发生问题。另外一种情况,如果将补丁文件应用到了一个错误的源文件上,假如恰好这个文件有同样的行数,那么补丁也可以成功应用。而这都是我们不希望看到的结果。幸好,diff提供了一种不同的结果样式来避免上面的这些问题。
diff -c original.txt updated.txt
比较结果中包含了文件名,这样我们在应用补丁的时候,就不用输入文件名,从而节省了时间,避免了文件名输入错误的可能。文件名后都跟着文件的修改时间。再往下就是15个星号 * 表示后面的内容为文件替换、更新、删除等。*和-包含的数字或者数字范围表示行号,!开始的内容表示需要替换的内容,-表示需要删除的内容,+表示需要增加的内容,patch会依据这个上下文关系对文件进行更新。
patch -i mypatch2.patch -o updated.txt
注意,这里如果不指定输出文件的话,源文件就会被更新(这本来就是补丁文件的作用)。通常我们都会对源文件应用补丁,通常需要对多个文件进行处理。
比较多个文件并应用补丁
比较多个文件最简单的办法就是直接在命令后面跟文件夹,例如,如果包含子文件夹,记得加上 -r 参数。
只会比较不同的文件,不会比较目录的不同。
diff originaldirectory updateddirectory
下面来看看怎么对多个文件应用补丁,首先生成一个补丁文件,我们还是用上下文的格式。diff -c original update > directory.patch
在一个新的目录下拷贝 original 文件夹和补丁文件,执行 patch -i directory.patch,此时会提示找不到文件,因为patch会在当前文件夹查找文件(默认情况下patch会将文件名前的所有文件夹去掉)因为此时补丁文件在文件夹外面,所以我们应当告诉patch不要这么做,使用-p参数。
patch -p0 -i directory.patch
还原补丁文件的操作
有时候版本需要进行回撤,这时可以使用 -R 参数。
patch -p0 -R -i directory.patch
比较目录的不同
diff -r -q dir1 dir2
-r 如果比较两个目录,-r参数会比较其下同名的子目录
-q 输出结果中,只指出两个文件不同,而不输出两个文件具体内容的比较
Linux中的Diff和Patch
diff和patch的更多相关文章
- diff和patch的使用、patch文件的格式解说
为了弄懂 patch中的 p0 p1 和.orig文件是啥,找到了这篇文章! 来源:http://www.cnblogs.com/super119/archive/2010/12/18/19 ...
- svn/git的diff、patch
svn/git的diff.patch 前几天,正当我突突的写代码,企业微信嘀嘀一声响”在不,过来帮我看个bug”.本人一向助人为乐,高兴的冲了过去,然后就开始了一段长达1分钟的问题描述.很明显,此同学 ...
- diff和patch配合使用(转载备用)
Linux下diff与patch命令的配合使用 在Linux下,diff与patch命令配合使用可以进行简单的代码维护工作. [A] diffdiff命令用于比较文件的差异,可以用于制作patch文件 ...
- Linux中的版本控制---diff和patch命令
一.构造两个用于测试的文件 hello.txt: world.txt: 二.用diff命令比较两个文本文件的差异 对这个两个文本文件执行diff‘命令,并通过输出重定向,将差异保存在diff.txt文 ...
- 使用diff和patch指令生成文件差异和还原文件
使用diff和patch指令生成文件差异和还原文件 创建一个新的文件夹test然后进入test mkdir test cd test 首先创建文件a vim a.txt 随便输入一段文字后保存不退出. ...
- 关于 diff 和patch
参考: https://blog.csdn.net/zygblock/article/details/53384862 diff和patch是 版本控制 git 的不可缺少的工具 diff 是用来比较 ...
- Linux中的Diff和Patch
本文主要记录两个命令的学习情况:diff 和 patch.diff 和 patch 是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上.在数学上说,diff就是对两个集 ...
- 几个文本处理工具的简单使用(wc,cut,sort,uniq,diff和patch)
wc wc命令用于报告文本文件的一些统计计数,例如行数.单词数.字节数等. 语法如下. wc [OPTION]... [FILE]... wc [OPTION]... --files0-from=F ...
- 用Diff和Patch工具维护源码
在Unix系统下,维护源码版本可以使用很多方法,其中最常用的当然是大名鼎鼎的CVS,但实际上,简单的版本维护工作并没有必要使用复杂的CVS等专门的版本维护工具,Unix标配中的diff和patch工具 ...
随机推荐
- vue計算屬性
計算屬性:computed 和method的差別:computed是基於它的依賴緩存,只有它的相關依賴發生改變時才會重新獲取值. method是在重新渲染時,函數總會重新調用. comuputed:默 ...
- 洛谷 p1092 虫食算
题目链接: https://www.luogu.org/problemnew/show/P1092 这个题折腾了我好久 这其实本质上是一道凑算式的题目 ,让一个二维数组存算式,一个一位数组存字母分别代 ...
- ES 6 系列 - 赋值的新方式:解构赋值
变量的解构赋值 es 6 允许按照一定的模式,从数组和对象中提取值,然后对变量进行赋值,这被称之为解构: 一.数组的解构赋值 最基本写法: let [a, b, c] = [1, 2, 3]; a / ...
- matlab中randn(‘state’)
matlab中randn(‘state’)转载:http://www.cnblogs.com/rong86/p/3572284.html randn('state') 随机数都是由RandStream ...
- 训练赛-Move Between Numbers
题意:给你n个数,每个数有20个数字,每两个数字之间如果相等的数字数量为17个(一定是17),就能从一个数字到达另一个数字,给你两个数字编号,求从第一个数字编号到第二个数字编号之间最少需要走几次: 解 ...
- 【C/C++】实现数据结构广义表
1. 广义表的定义 每个元素可以为Atom,原子,也可以为线性表. 线性表的推广.线性表元素有唯一的前驱和后继,为线性表,而广义表是多层次的线性表 表头:第一个元素,可能是 ...
- http协议状态码大全
100 Continue:初始的请求已经接受,客户应当继续发送请求的其余部分. 101 Switching Protocols:服务器将遵从客户的请求转换到另外一种协议. 200 OK:一切正常, ...
- 【BZOJ5289】[HNOI2018]排列(贪心)
[BZOJ5289][HNOI2018]排列(贪心) 题面 BZOJ 洛谷 题解 这个限制看起来不知道在干什么,其实就是找到所有排列\(p\)中,\(p_k=x\),那么\(k<j\),其中\( ...
- 转----ui输入测试数据
jin'tHackChecker黑测工作室 - 专注于软件安全测试技术研究!(www.AutomationQA.com)常用安全测试用例 建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL ...
- 纯CSS画的基本图形(圆形、三角形、多边形、爱心、八卦等)
1.圆形 .circle { width: 100px; height: 100px; background: red; border-radius: 50px; } 2.椭圆 .oval { wid ...