• 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. Redhat7配置ali-yum源

    1.删除所有包 rpm -qa|grep yum|xargs rpm -e --nodeps 2.下载相关文件 下载地址  https://mirrors.aliyun.com/centos/7/os ...

  2. Node.js 开发指南

    1.Node.js 简介 Node.js 其实就是借助谷歌的 V8 引擎,将桌面端的 js 带到了服务器端,它的出现我将其归结为两点: V8 引擎的出色: js 异步 io 与事件驱动给服务器带来极高 ...

  3. Jenkins获取运行job的用户名

    1. Jenkins获取运行job的用户名 需要安装user build vars plugin 插件,然后就可以取到$BUILD_USER_ID变量. user build vars plugin下 ...

  4. 背水一战 Windows 10 (109) - 通知(Tile): 按计划显示 tile 通知, 轮询服务端以更新 tile 通知

    [源码下载] 背水一战 Windows 10 (109) - 通知(Tile): 按计划显示 tile 通知, 轮询服务端以更新 tile 通知 作者:webabcd 介绍背水一战 Windows 1 ...

  5. 「HNOI2016」数据结构大毒瘤

    真是 \(6\) 道数据结构毒瘤... 开始口胡各种做法... 「HNOI2016」网络 整体二分+树状数组. 开始想了一个大常数 \(O(n\log^2 n)\) 做法,然后就被卡掉了... 发现直 ...

  6. 为什么要学习 Spring Boot?

    我们知道,从 2002 年开始,Spring 一直在飞速的发展,如今已经成为了在Java EE(Java Enterprise Edition)开发中真正意义上的标准,但是随着技术的发展,Java E ...

  7. 从Java到JVM到OS线程睡眠

    Java 中有时需要将线程进入睡眠状态,这时一般我们就会通过 Thread.sleep 使线程进入睡眠状态,接下去就看看执行该语句在 JVM 中做了什么. 简单例子 以下是一个简单的例子,使主线程睡眠 ...

  8. 【log4j2】log4j的升级版log4j2的简单入门使用

    1.jar包 log4j-api.jar    +    log4j-core.jar maven仓库配置: <dependency> <groupId>org.apache. ...

  9. AI历史和哲学基础浅谈

    换个角度看AI:研究历史和哲学逻辑 正如题图所示,仿生人会梦见电子羊吗?(注:Do Androids Dream of Electric Sheep?是Philip K. Dick所著的一本科幻小说, ...

  10. 小问题填坑,关于obj.x和obj["x"]

    之前在看对象的api中for in函数时,有一个地方让我略有疑惑: var obj={ x:100, y:200, z:300 }; for(var key in obj){ if(obj.hasOw ...