通过diff命令比较出新旧版本之间的差异,并以patch命令来将旧版本更新为新版本。或者从新版本通过打补丁回到旧版本。

一、diff的使用

  • 作用
    • 逐行比较两个文本文件,把文件的差异显示到标准输出。如果要指定要比较目录,那么diff命令会比较目录中相同文件名的文件,不会比较子目录。
  • 语法
diff [option] files
  • 选项列表
-<行数>                      指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
-a或--text                   diff预设只会逐行比较文本文件。
-b或--ignore-space-change    不检查空格字符的不同。
-B或--ignore-blank-lines     不检查空白行。
-c                          显示全部内文,并标出不同之处。
-C<行数>或--context<行数>    与执行"-c-<行数>"指令相同。
-d或--minimal                使用不同的演算法,以较小的单位来做比较。
-D<巨集名称>或ifdef<巨集名称>  此参数的输出格式可用于前置处理器巨集。
-e或--ed                     此参数的输出格式可用于ed的script文件。
-f或-forward-ed              输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
-H或--speed-large-files      比较大文件时,可加快速度。
-l<字符或字符串>或--ignore-matching-lines<字符或字符串>  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
-i或--ignore-case            不检查大小写的不同。
-l或--paginate           将结果交由pr程序来分页。
-n或--rcs                将比较结果以RCS的格式来显示。
-N或--new-file           在比较目录时,若文件A仅出现在某个目录中,预设会显示:
Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
-p                      若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
-P或--unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
-q或--brief              仅显示有无差异,不显示详细的信息。
-r或--recursive          比较子目录中的文件。
-s或--report-identical-files  若没有发现任何差异,仍然显示信息。
-S<文件>或--starting-file<文件>  在比较目录时,从指定的文件开始比较。
-t或--expand-tabs        在输出时,将tab字符展开。
-T或--initial-tab        在每行前面加上tab字符以便对齐。
-u,-U<列数>或--unified=<列数>  以合并的方式来显示文件内容的不同。
-v或--version            显示版本信息。
-w或--ignore-all-space   忽略全部的空格字符。
-W<宽度>或--width<宽度>  在使用-y参数时,指定栏宽。
-x<文件名或目录>或--exclude<文件名或目录>  不比较选项中所指定的文件或目录。
-X<文件>或--exclude-from<文件>  您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
-y或--side-by-side       以并列的方式显示文件的异同之处。
--help                  显示帮助。
--left-column           在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
--suppress-common-lines  在使用-y参数时,仅显示不同之处。
  • 用diff生成补丁
diff -Naur test1.c test2.c > test.patch(补丁文件)

二、patch的使用

  • 作用
    • 利用生成的补丁文件给原文件打补丁
  • 语法
patch [option] < test.patch(补丁文件)
  • 选项列表
-b或--backup      备份每一个原始文件。
-B<备份字首字符串>或--prefix=<备份字首字符串>  设置文件备份时,附加在文件名称前面的字首字符串,该字符串可以是路径名称。
-c或--context  把修补数据解译成关联性的差异。
-d<工作目录>或--directory=<工作目录>    设置工作目录。
-D<标示符号>或--ifdef=<标示符号>        用指定的符号把改变的地方标示出来。
-e或--ed                             把修补数据解译成ed指令可用的叙述文件。
-E或--remove-empty-files             若修补过后输出的文件其内容是一片空白,则移除该文件。
-f或--force                          此参数的效果和指定"-t"参数类似,但会假设修补数据的版本为新 版本。
-F<监别列数>或--fuzz<监别列数>           设置监别列数的最大值。
-g<控制数值>或--get=<控制数值>              设置以RSC或SCCS控制修补作业。
-i<修补文件>或--input=<修补文件>        读取指定的修补文件。
-l或--ignore-whitespace                  忽略修补数据与输入数据的跳格,空格字符。
-n或--normal                             把修补数据解译成一般性的差异。
-N或--forward                            忽略修补的数据较原始文件的版本更旧,或该版本的修补数据已使 用过。
-o<输出文件>或--output=<输出文件>           设置输出文件的名称,修补过的文件会以该名称存放。
-p<剥离层级>或--strip=<剥离层级>            设置欲剥离几层路径名称。
-f<拒绝文件>或--reject-file=<拒绝文件>          设置保存拒绝修补相关信息的文件名称,预设的文件名称为.rej。
-R或--reverse                            假设修补数据是由新旧文件交换位置而产生。
-s或--quiet或--silent                     不显示指令执行过程,除非发生错误。
-t或--batch                              自动略过错误,不询问任何问题。
-T或--set-time                           此参数的效果和指定"-Z"参数类似,但以本地时间为主。
-u或--unified                            把修补数据解译成一致化的差异。
-v或--version                            显示版本信息。
-V<备份方式>或--version-control=<备份方式>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-z"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字符串。
-Y<备份字首字符串>或--basename-prefix=--<备份字首字符串>  设置文件备份时,附加在文件基本名称开头的字首字符串。
-z<备份字尾字符串>或--suffix=<备份字尾字符串>  此参数的效果和指定"-B"参数类似,差别在于修补作业使用的路径与文件名若为src/linux/fs/super.c,加上"backup/"字符串后,文件super.c会备份于/src/linux/fs/backup目录里。
-Z或--set-utc                            把修补过的文件更改,存取时间设为UTC。
--backup-if-mismatch                    在修补数据不完全吻合,且没有刻意指定要备份文件时,才备份文件。
--binary                                以二进制模式读写数据,而不通过标准输出设备。
--help                                  在线帮助。
--nobackup-if-mismatch                  在修补数据不完全吻合,且没有刻意指定要备份文件时,不要备份文件。
--verbose                               详细显示指令的执行过程。
  • 用patch打补丁
patch -bp0 < test.patch(补丁文件)
  • 撤销打的补丁
patch -Rp0 < test.patch(补丁文件)

工具篇:补丁工具diff 和 patch相关推荐

  1. mysql 开发进阶篇系列 32 工具篇(mysqladmin工具)

    一.概述 mysqladmin是一个执行管理操作的客户端程序.用来检要服务的配置和当前的状态,创建并删除数据库等.功能与mysql客户端类似,主要区别在于它更侧重于一些管理方面的功能. 1. 查找my ...

  2. java工具篇----------------远程控制工具(向日葵和teamviewer)

    官网下载或发邮件给我.我给你们发15201208464@163.com 向日葵 teamviewer

  3. 外部工具连接SaaS模式云数据仓库MaxCompute实战:商业BI分析工具篇

    简介:MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速.全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户运 ...

  4. 混淆矩阵怎么看_201.工具篇MECE法则:透过结构看世界。

    工具篇|战略工具1之前讲过了商业.管理.个人,今天讲如何用工具来提高上述的效率工具.今天先讲一MECE法则.某公司将2020年定为品牌战略年,小王接到领导安排写作任务,要求充分阐述公司 的品牌主张.小 ...

  5. 2.Cocos跑酷游戏——工具篇 Dictionary

    1.List工具篇 2.工具篇 Dictionary 3.工具篇 读取Json文件保存数据 4.资源管理ResourceManager 5.界面层级管理 LayerManager 6.界面管理 UIM ...

  6. 1.Cocos跑酷游戏——List工具篇

    1.List工具篇 2.工具篇 Dictionary 3.工具篇 读取Json文件保存数据 4.资源管理ResourceManager 5.界面层级管理 LayerManager 6.界面管理 UIM ...

  7. iOS Hook相关教程 工具篇

    iOS hook相关教程 工具篇 osx 工具集 class-dump 建议安装 class-dump,顾名思义,就是用来dump目标对象的class信息的工具.该工具利用Objective-C语言的 ...

  8. 【个人博客设计】开发工具篇

    概述 系列: [个人博客设计] [个人博客设计]框架与插件篇 [个人博客设计]开发工具篇 开发工具:IDEA+Navicat+tomcat+Hbuilder+微信开发者工具 1.1.IntelliJ ...

  9. diff 与 patch 的使用

    在 Linux 的日常使用中,我们经常需要修改一些配置文件,然而在软件升级以后,经常会面临配置更新后与原配置部分不兼容的问题(当然我们更多的可能是来制作软件升级的补丁).在这种情况下我们通常有两种选择 ...

最新文章

  1. 《电子基础与维修工具核心教程》——2.6 节点分压原理
  2. WIN7添加loopback接口
  3. matlab编译错误怎么查找,matlab - Matlab mex文件编译错误-“未启用SSE2指令集” - 堆栈内存溢出...
  4. informix报错244_关于informix的配置问题
  5. java怎么把文件写入到usb里_如何创建PowerShell脚本以将文件复制到USB闪存驱动器?...
  6. Lecture 13 Amortized Analysis
  7. python+PyQT+Eric安装配置
  8. 前端demo:实现背景半透明,div与文本正常显示
  9. MPICH C语言接口函数说明
  10. html+css+js实现关键词随机图片
  11. 红旗系统 oracle,红旗linux的Asianux 3.0安装oracle10.2
  12. 计算机房房间要求,数据中心机房的标准规范
  13. 解决mac系统压缩文件.zip,在win解压后,出现乱码
  14. 阿里云商标注册流程是怎么样的(注册步骤详细教程)
  15. js导出WORD设置分页
  16. 城市大脑建设典型实践及经验启示
  17. CentOS 安装meld
  18. 关于《Robust outlier detection based on the changing rate of directed density ratio》的阅读笔记
  19. MQTT网关连接阿里云平台案例教程
  20. ❤️学习linux 两年多沉淀下来的linux 命令大全⭐建议收藏⭐

热门文章

  1. 压电水听器原理/水声传感器工作原理
  2. 运行docker出现“Some WSL system related access rights are not set correctly. ”
  3. AssetStudio / UnityStudio下载地址
  4. python将excel转换成图片格式_利用python将图片转换成excel文档格式
  5. 计算机专业英语短文翻译,计算机专业中英文翻译(外文翻译、文献翻译)
  6. D2欧拉路,拓扑排序,和差分约束
  7. VEGAS Pro 16 edit 中文最新版下载
  8. Android MVC框架
  9. 趋动科技猎户座OrionX AI加速器资源池化软件——产品介绍
  10. 什么是Spring三级缓存 对象在三级缓存中的创建流程 【三级缓存 循环依赖】