• 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. leecode第二天-使用异或找出数组中的非重复元素

    leecode题目描述如下: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 思路: 最开始想到的是使用排序,排序之后就很容易找到非重复元素了. ...

  2. Gigabyte Z170N-WIFI 黑苹果 10.12

    简述 (此文在我的个人博客长期更新)[http://aiellochan.com/2018/02/11/play/Gigabyte-Z170N-WIFI-%E9%BB%91%E8%8B%B9%E6%9 ...

  3. 获取resource下文件

    Resource resource = new ClassPathResource(certPath);File file= resource.getFile();

  4. awk\sed\grep 补充

    # awk\sed\grep 补充 以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符 sed's:test:TEXT:g' sed's|test|TEXT|g' 定界符出现在样式内 ...

  5. metools,个人工具站点分享

    需要[加密/解密][编码/解码][生成二维码]的时候不用再进百度点广告~ 也不需要去收藏夹找网址~ 我的目的大概就是如此. 项目地址:https://github.com/yimogit/metool ...

  6. GIT学习笔记——常用命令

    最近使用使用GIT较多,但命令很容易就忘记了,于是整理下,大多整理与一些文档和他人博客 在当前目录新建建一个纯git代码库 $ git --bare init 在当前目录新建一个Git代码库 $ gi ...

  7. Linux rpm包安装不了

    有时候会发现安装rpm包时会报错,解决办法: 到rpm包所在目录执行 createrepo -v ./   这个命令 然后会生成一个repodate这个目录,然后在进行安装rpm就可以了!

  8. Centos 基本命令不能用恢复方法

    遇到命令都不能用,直接执行下面的语句就可以: export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/roo ...

  9. Python编程Day4——if判断、while循环、for循环

    一.if判断 语法一: if条件: 代码块1 代码块2 代码块3 示例: sex='female' age=18 is_beautiful=True if sex =='female'and age& ...

  10. Kubernetes 服务入口管理 Traefik Ingress Controller

    前面部署了 kubernetes/ingress-nginx 作为 Ingress Controller,使用 Nginx 反向代理与负载,通过 Ingress Controller 不断的跟 Kub ...