工具篇:补丁工具diff 和 patch
通过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相关推荐
- mysql 开发进阶篇系列 32 工具篇(mysqladmin工具)
一.概述 mysqladmin是一个执行管理操作的客户端程序.用来检要服务的配置和当前的状态,创建并删除数据库等.功能与mysql客户端类似,主要区别在于它更侧重于一些管理方面的功能. 1. 查找my ...
- java工具篇----------------远程控制工具(向日葵和teamviewer)
官网下载或发邮件给我.我给你们发15201208464@163.com 向日葵 teamviewer
- 外部工具连接SaaS模式云数据仓库MaxCompute实战:商业BI分析工具篇
简介:MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速.全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户运 ...
- 混淆矩阵怎么看_201.工具篇MECE法则:透过结构看世界。
工具篇|战略工具1之前讲过了商业.管理.个人,今天讲如何用工具来提高上述的效率工具.今天先讲一MECE法则.某公司将2020年定为品牌战略年,小王接到领导安排写作任务,要求充分阐述公司 的品牌主张.小 ...
- 2.Cocos跑酷游戏——工具篇 Dictionary
1.List工具篇 2.工具篇 Dictionary 3.工具篇 读取Json文件保存数据 4.资源管理ResourceManager 5.界面层级管理 LayerManager 6.界面管理 UIM ...
- 1.Cocos跑酷游戏——List工具篇
1.List工具篇 2.工具篇 Dictionary 3.工具篇 读取Json文件保存数据 4.资源管理ResourceManager 5.界面层级管理 LayerManager 6.界面管理 UIM ...
- iOS Hook相关教程 工具篇
iOS hook相关教程 工具篇 osx 工具集 class-dump 建议安装 class-dump,顾名思义,就是用来dump目标对象的class信息的工具.该工具利用Objective-C语言的 ...
- 【个人博客设计】开发工具篇
概述 系列: [个人博客设计] [个人博客设计]框架与插件篇 [个人博客设计]开发工具篇 开发工具:IDEA+Navicat+tomcat+Hbuilder+微信开发者工具 1.1.IntelliJ ...
- diff 与 patch 的使用
在 Linux 的日常使用中,我们经常需要修改一些配置文件,然而在软件升级以后,经常会面临配置更新后与原配置部分不兼容的问题(当然我们更多的可能是来制作软件升级的补丁).在这种情况下我们通常有两种选择 ...
最新文章
- 《电子基础与维修工具核心教程》——2.6 节点分压原理
- WIN7添加loopback接口
- matlab编译错误怎么查找,matlab - Matlab mex文件编译错误-“未启用SSE2指令集” - 堆栈内存溢出...
- informix报错244_关于informix的配置问题
- java怎么把文件写入到usb里_如何创建PowerShell脚本以将文件复制到USB闪存驱动器?...
- Lecture 13 Amortized Analysis
- python+PyQT+Eric安装配置
- 前端demo:实现背景半透明,div与文本正常显示
- MPICH C语言接口函数说明
- html+css+js实现关键词随机图片
- 红旗系统 oracle,红旗linux的Asianux 3.0安装oracle10.2
- 计算机房房间要求,数据中心机房的标准规范
- 解决mac系统压缩文件.zip,在win解压后,出现乱码
- 阿里云商标注册流程是怎么样的(注册步骤详细教程)
- js导出WORD设置分页
- 城市大脑建设典型实践及经验启示
- CentOS 安装meld
- 关于《Robust outlier detection based on the changing rate of directed density ratio》的阅读笔记
- MQTT网关连接阿里云平台案例教程
- ❤️学习linux 两年多沉淀下来的linux 命令大全⭐建议收藏⭐
热门文章
- 压电水听器原理/水声传感器工作原理
- 运行docker出现“Some WSL system related access rights are not set correctly. ”
- AssetStudio / UnityStudio下载地址
- python将excel转换成图片格式_利用python将图片转换成excel文档格式
- 计算机专业英语短文翻译,计算机专业中英文翻译(外文翻译、文献翻译)
- D2欧拉路,拓扑排序,和差分约束
- VEGAS Pro 16 edit 中文最新版下载
- Android MVC框架
- 趋动科技猎户座OrionX AI加速器资源池化软件——产品介绍
- 什么是Spring三级缓存 对象在三级缓存中的创建流程 【三级缓存 循环依赖】