使用diff和patch制作及打补丁
首先介绍一下diff和patch。
1、建立测试文件test0、test1
[www.linuxidc.com@linuxidc patch]$ cat >>test0<<eof
> 111111
> 111111
> 111111
> EOF
[www.linuxidc.com@linuxidc patch]$ more test0
111111
111111
111111
[www.linuxidc.com@linuxidc patch]$ cat >>test1<<eof
> 222222
> 111111
> 222222
> 111111
> EOF
[www.linuxidc.com@linuxidc patch]$ more test1
222222
111111
222222
111111
2、使用diff创建补丁test1.patch
[www.linuxidc.com@linuxidc patch]$ diff -uN test0 test1 > test1.patch
【注:因为单个文件,所以不需要-r选项。选项顺序没有关系,即可以是-uN,也可以是-Nu。】
[www.linuxidc.com@linuxidc patch]$ ls
test0 test1 test1.patch
[www.linuxidc.com@linuxidc patch]$ more test1.patch
************************************************************
patch文件的结构
补丁头
补丁头是分别由---/+++开头的两行,用来表示要打补丁的文件。---开头表示旧文件,+++开头表示新文件。
一个补丁文件中的多个补丁
一个补丁文件中可能包含以---/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。
块
块是补丁中要修改的地方。它通常由一部分不用修改的东西开始和结束。他们只是用来表示要修改的位置。他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头。
块的缩进
块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的。
块的第一列
+号表示这一行是要加上的。
-号表示这一行是要删除的。
没有加号也没有减号表示这里只是引用的而不需要修改。
************************************************************
***diff命令会在补丁文件中记录这两个文件的首次创建时间,如下***
--- test0 2006-08-18 09:12:01.000000000 +0800
+++ test1 2006-08-18 09:13:09.000000000 +0800
@@ -1,3 +1,4 @@
+222222
111111
-111111
+222222
111111
[www.linuxidc.com@linuxidc patch]$ patch -p0 < test1.patch
patching file test0
[www.linuxidc.com@linuxidc patch]$ ls
test0 test1 test1.patch
[www.linuxidc.com@linuxidc patch]$ cat test0
222222
111111
222222
111111
3、可以去除补丁,恢复旧版本
[www.linuxidc.com@linuxidc patch]$ patch -RE -p0 < test1.patch
patching file test0
[www.linuxidc.com@linuxidc patch]$ ls
test0 test1 test1.patch
[www.linuxidc.com@linuxidc patch]$ cat test0
111111
111111
111111
二、为多个文件进行补丁操作
1、创建测试文件夹
[www.linuxidc.com@linuxidc patch]$ mkdir prj0
[www.linuxidc.com@linuxidc patch]$ cp test0 prj0
[www.linuxidc.com@linuxidc patch]$ ls
prj0 test0 test1 test1.patch
[www.linuxidc.com@linuxidc patch]$ cd prj0/
[www.linuxidc.com@linuxidc prj0]$ ls
test0
[www.linuxidc.com@linuxidc prj0]$ cat >>prj0name<<eof
> --------
> prj0/prj0name
> --------
> EOF
[www.linuxidc.com@linuxidc prj0]$ ls
prj0name test0
[www.linuxidc.com@linuxidc prj0]$ cat prj0name
--------
prj0/prj0name
--------
[www.linuxidc.com@linuxidc prj0]$ cd ..
[www.linuxidc.com@linuxidc patch]$ mkdir prj1
[www.linuxidc.com@linuxidc patch]$ cp test1 prj1
[www.linuxidc.com@linuxidc patch]$ cd prj1
[www.linuxidc.com@linuxidc prj1]$ cat >>prj1name<<eof
> ---------
> prj1/prj1name
> ---------
> EOF
[www.linuxidc.com@linuxidc prj1]$ cat prj1name
---------
prj1/prj1name
---------
[www.linuxidc.com@linuxidc prj1]$ cd ..
使用diff和patch制作及打补丁相关推荐
- Linux下使用diff和patch制作及打补丁(已经实践可行!)
在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁. 通过diff命令比较出新旧版本之间的差异,并以patch ...
- linux下diff、patch制作补丁
http://blog.csdn.net/goldfighter/article/details/6150309 学习资料的收集比较简单,方法一类似于这种初级问题网上资料非常丰富,google或者ba ...
- linux rcs文件中的ip,linux学习笔记之diff和patch命令
关键字:Linux 学习笔记 运维 系统 命令 一.命令的功能 diff命令的功能为逐行比较两个文本文件,列出其不同之处.可是做成diff记录也就是补丁. patch就是利用diff制作的补丁来打到文 ...
- diff和patch
对于开源源码修改过程中的必经阶段:对源码打补丁,总是不够精通,搜索了补丁的原理的详细过程,如下: 在移植或版本升级过程中,手动比对(用比对工具)转换是很费力的事情,特别是发生变化的文件非常多的情况下, ...
- diff 与 patch 的使用
在 Linux 的日常使用中,我们经常需要修改一些配置文件,然而在软件升级以后,经常会面临配置更新后与原配置部分不兼容的问题(当然我们更多的可能是来制作软件升级的补丁).在这种情况下我们通常有两种选择 ...
- diff patch制作补丁打补丁
对于开源源码修改过程中的必经阶段:对源码打补丁,总是不够精通,搜索了补丁的原理的详细过程,如下: 在移植或版本升级过程中,手动比对(用比对工具)转换是很费力的事情,特别是发生变化的文件非常多的情况下, ...
- 补丁的制作和使用:diff和patch
原理 现在有一个文件file1,通过修改file1得到了文件file2,然后用diff工具比较file1和file2的差异,得到一个补丁文件file.patch,它记录了两个文件的不同之处,patch ...
- linux打patch和patch制作的方法(diff和patch命令)
linux下常用的补丁命令有两个:diff和patch,diff用来制作补丁文件,patch用来给源文件打补丁. 一.diff命令 格式:$ diff [options] src_file dest_ ...
- linux内核patch文件夹,如何制作patch文件及如何打patch 附带linux打补丁命令
对某个版本的Linux内核做了修改以后,如果希望发布出去给别人用,那么就需要制作针对此版本的patch文件.比如基于Linux-2.6.25内核 做了修改,修改后的内容放在文件夹Linux-2.6.2 ...
最新文章
- 利用Maven搭建Spring开发环境 【转】
- 将一种文本类型安全的转化为另一种类型
- How to Secure Your Smart Contracts: 6 Solidity Vulnerabilities and how to avoid them (Part 1)
- 东大教务处验证码破解
- Kotlin实战指南十五:协程泄漏
- 使用wireshark以及filddler配合抓去手机端的TCP以及HTTP请求
- 设置代码ios中根据文本设置label高度设置代码
- 数据库原理与应用(SQL Server)笔记 第五章 索引和视图
- 到天宫做客(洛谷P1178题题解,Java语言描述)
- mysql连接编码设置_MySQL基础 - 编码设置
- HBase API 创建表
- java8 垃圾回收算法_Java垃圾回收机制算法详解
- 图文并茂带你了解成分句法分析
- CRAFT:Character region awareness for text detection 论文阅读
- LeetCode | 0665. Non-decreasing Array非递减数列【Python】
- 网络共享里的计算机无法打开,局域网共享文件夹打不开怎么办
- 数据基础---数据可视化
- xlinx pcie xvc
- 让IE浏览器支持HTML5标准的方法(转)
- Oracle各个服务介绍
热门文章
- ASPack 2.x (without poly) - Alexey Solodovnikov [Overlay]脱壳
- 数组的属性、foreach遍历、交错数组与矩形数组的区别
- 商场超市数据备份方案
- 给被Access过大问题困扰的网站,提供几种解决方案
- python匿名函数就是没有名字的函数_python 之 匿名函数
- 在Java eclipse 中Spring Boot工具安装步骤
- android ios 传视频播放器,推荐用于iOS / Android全面格式的视频播放器|手机最强大的播放器...
- php定时任务引入文件,php解决crontab定时任务不能写入文件问题的方法分析
- 传说中Python最难理解的点|看这完篇就够了
- 【Codeforces576E_CF576E】Painting Edges(可撤销并查集+线段树分治)