Welcome 微信登录

首页 / 操作系统 / Linux / 补丁的制作和使用:diff和patch

原理现在有一个文件file1,通过修改file1得到了文件file2,然后用diff工具比较file1和file2的差异,得到一个补丁文件file.patch,它记录了两个文件的不同之处,patch工具就可以根据这个补丁文件修改file1,从而得到file2。相关工具diffdiff [options] 源文件 目标文件diff用于列出两个文件的不同之处,指示如何由源文件变为目标文件,可以用重定向生成补丁文件,注意:diff只能用于比较文本文件。常用选项:-c,输出一个基于上下文的diff,即提供每处修改的前后机会内容,这样patch命令可以在打补丁前验证上下文是否匹配,而补丁文件也更容易阅读。-b,忽略空格引起的变化-B,忽略插入/删除空行引起的变化-i,忽略大小写-N,在比较目录时,如果一个文件只在其中一个目录中找到,那它被视为在第二个目录中是一个空文件-r,在比较目录时,递归比较所有子目录-u,使用统一的输出格式patchpatch [options]  源文件 补丁文件patch用于根据补丁文件修改源文件,它会直接改动源文件,打补丁前请注意备份。常用选项:-R,反向补丁,将已经打了补丁的文件恢复到原来的样子-p[num],忽略前几层目录,目录的层数由num指定例1:比较两个文件file1:
  1. this is line1  
  2. this is line2   
  3. this is line3  
  4. this is line4  
file2:
  1. this is line1  
  2. this is line2 hello  
  3. this is line3  
  4. this is line4  
  5. this is line5  
执行:
  1. diff file1 file2 > file.patch  
生成补丁文件file.patch:
  1. 2c2  
  2. < this is line2   
  3. ---  
  4. > this is line2 hello  
  5. 4a5  
  6. > this is line5  
对file1打补丁:
  1. patch file1 file.patch  
file1的内容就变成了file2,如果想把file1变为原来的样子,执行:
  1. patch -R file1 file.patch   
例2:比较两个目录在工作路径下有两个目录:doc1和doc2。执行diff命令,生成补丁文件patch:
  1. diff -Nur doc1 doc2 > doc.patch  
用patch工具为doc1打补丁:
  1. bash# cd doc1  
  2. bash# patch -p1 < ../doc.patch  
为Linux系统配置serial consolehexdump——Linux系统的二进制文件查看工具相关资讯      Linux教程 
  • Linux教程:如何在命令行中查看目  (07/28/2014 12:22:23)
  • Linux 修改root密码  (11/03/2012 07:53:38)
  • su - root 与su root的区别  (06/06/2012 00:39:40)
  • Linux进程间通信:消息队列  (01/28/2013 09:43:00)
  • U盘安装Linux开机无法启动解决方法  (10/07/2012 08:55:52)
  • Windows 7/Linux 同步时间  (05/15/2012 06:17:55)
本文评论 查看全部评论 (0)
表情: 姓名: 字数