• patch:通过补丁文件,来对原文件打补丁
  • diff:      比较两个文件,然后生成一个补丁文件

1.patch用法  

 patch -p[剥离层级]  <[补丁文件]

2.patch命令示例

cd u-boot-1.1./             //进入原文件目录      

patch -p1  <../u-boot-1.1.6_jz2440.patach   
//“p” 表示去掉补丁文件里路径的第几部分。"1",表示去掉第1个
//“<” 指补丁文件位置
// “../” 表示返回上一个目录,因为这补丁文件和原文件在同一目录下

为什么需要输入-p1?

如下图所示,可以看到补丁文件里,每个需要改的文件,都有u-boot-1.1.6目录,而我们之前已经cd进入了,所以需要输入-p1,去掉它

3.patch文件内容补充

diff -urN u-boot-1.1./common/cmd_bootm.c u-boot-1.1.6_jz2440/common/cmd_bootm.c  //绿色代表原文件名以及文件地址,红色代表打上补丁后的新文件名以及地址
--- u-boot-1.1./common/cmd_bootm.c -- ::01.000000000 +
+++ u-boot-1.1.6_jz2440/common/cmd_bootm.c -- ::38.150155640 +
//--- 对文件里代码删减 +++ 对文件里代码添加
@@ -, +, @@ //-318,5 表示在原文件里第318行内有删减,接下来显示5段。+318,5同样类似
//第318行,第一段
switch (hdr->ih_comp) { //第319行,第二段
case IH_COMP_NONE: //第320行,第三段
- if(ntohl(hdr->ih_load) == addr) { //第321行,删减第四段
+ if(ntohl(hdr->ih_load) == data) { //第322行,增加第五段

4.diff常用参数  

  • -u: 表示在比较结果中输出上下文中一些相同的行,这有利于人工定位
  • -r:  表示递归比较各个子目录下的文件
  • -N“:将不存在的文件当作空文件
  • -B: 忽略对空行的比较

5.diff命令示例

 diff -urN   u-boot-2012.04.   u-boot-2012.04.01_new > u-boot-2012.04.01_new.patch
//u-boot-2012.04.01:原文件
//u-boot-2012.04.01_new:修改后的新文件

当一个文件有多个补丁需要打,则使用for循环批处理命令

比如,在tmp/目录下打上../patches/目录下的所有补丁文件:

cd tmp/

for file in ../patches/*.patch; do patch -p1 < $file; done      

Linux-学习patch命令打补丁,diff命令制作补丁(3)的更多相关文章

  1. Linux学习之十四、管线命令

    Linux学习之十四.管线命令 地址:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php

  2. Linux学习之RPM包管理-rpm命令管理(十六)

    Linux学习之RPM包管理-rpm命令管理 目录 简介 RPM包依赖性 包全名与包名 rpm软件包安装 rpm软件包卸载 升级降级rpm软件包 rpm软件包的查询 rpm软件包校验 简介 RPM是R ...

  3. Linux学习之路-Linux-at及cron命令【7】---20171215

    Linux学习之路-Linux-at及cron命令[7]---20171215 DannyExia000人评论986人阅读2017-12-24 17:28:03   ntpdate 命令 [root@ ...

  4. 每天一个命令day1【diff 命令】(具体实例看下一节)

    diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件.diff程序的 ...

  5. linux shell 脚本攻略学习13--file命令详解,diff命令详解

    一.file命令详解 find命令可以通过查看文件内容来找出特定类型的文件,在UNIX/ Linux系统中,文件类型并不是由文件扩展名来决定的(windows中却正是这么做的),file命令的目的是从 ...

  6. linux每日命令(33):diff命令

    diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件.diff程序的 ...

  7. Linux学习笔记(3)-常用命令

    江湖传言,Linux和Windows不同,他主要的用途是在一些服务器,或者片内系统上,所以人机交互界面自然就没有Windows那么漂亮,其实也没有那个必要. 所以,学习Linux的第一步,就是学习他那 ...

  8. Linux学习之CentOS(十二)--crontab命令的使用方法

    http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/06/3002602.html crontab命令常见于Unix和Linux的操作系统之 ...

  9. linux学习笔记(1) -- 关于命令的一些操作

    Linux 目录 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录.所有的东西都是从这里开始.当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到ho ...

随机推荐

  1. 插入排序之Java实现

    插入排序类似于大多数人安排扑克牌的方式. 1.从你手中的一张牌开始, 2.选择下一张卡并将其插入到正确的排序顺序中, 3.对所有的卡重复上一步. /** * * 代码理解:只需要记住两点: * 1.当 ...

  2. Python学习笔记-基础2

    1.列表list 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 1.定义列表 names = ["Ronaldo","Messi" ...

  3. Delphi Excel导入 的通用程序

    步骤: 1 连excel(自己知道其格式,最好是没个字段在数据一一对应) 2 读excel数据,填入到数据库 我这里有个函数,实现把excel表格中数据导入数据库,在一条数据导入前判断数据库中是否有该 ...

  4. 背水一战 Windows 10 (100) - 应用间通信: 分享

    [源码下载] 背水一战 Windows 10 (100) - 应用间通信: 分享 作者:webabcd 介绍背水一战 Windows 10 之 应用间通信 分享 示例1.本例用于演示如何开发一个分享的 ...

  5. python模块的导入的两种方式区别详解

    Python 有两种导入模块的方法.两种都有用,你应该知道什么时候使用哪一种方法.一种方法,import module,另一种是from module import,下面是 from module i ...

  6. Eclipse环境搭建并且运行wordcount程序

    一.安装Hadoop插件 1. 所需环境  hadoop2.0伪分布式环境平台正常运行 所需压缩包:eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz 在Linu ...

  7. 【sql注入】浅谈JSP安全开发之SQL注入

    [sql注入]浅谈JSP安全开发之SQL注入 本文转自:i春秋社区 前言不管是用什么语言编写WEB应用程序,他们都或多或少有一些地方存在漏洞.如果你想知道漏洞的运行原理,和防御方案,那么请看完本篇文章 ...

  8. Javascript高级编程学习笔记(45)——DOM 操作表格及DOM动态集合

    操作DOM表格 早些时候,HTML 还是以表格布局为主, 所以DOM操作表格是比较重要的一点 但是现如今 有其它的选择,所以表格的操作也就慢慢地淡出了人们的视线 所以这里也就不过多去详细展开,这里也就 ...

  9. Python学习笔记【第八篇】:Python内置模块

    什么时模块 Python中的模块其实就是XXX.py 文件 模块分类 Python内置模块(标准库) 自定义模块 第三方模块 使用方法 import 模块名 form 模块名 import 方法名 说 ...

  10. Python开发爆破字典

    这里只是分享一下Python如何生成爆破字典 关于爆破工具编写我会在下一篇提到 其实有了爆破字典的话,直接使用Burp,Hydra等一些工具就可以做爆破了! Burp的使用在我以前的博客中有写过,至于 ...