Linux 下经常需要给别人提供 patch 以及合 patch,这时需要用到 Linux 的 diff 和 patch 命令。

1. diff 命令

  diff 命令常用来比较文件、目录,也可以用来制作补丁文件。所谓 “补丁文件” 就是 “修改后的文件” 与 “修改前(原始文件) ” 的差别。

  常用选项如下:

  1. “-u” : 表示在比较结果中输出上下文中一些相同的行,这有利于人工定位。

  2. “-r” :表示递归比较各个子目录下的文件。

  3. “-N”:将不存在的文档当做空文件。

  4. “-w”:忽略对空格的比较。

  5. “-B” :忽略对空行的比较。

EX:假设 linux-2.6.22.6 目录中是原始的内核,linux-2.6.22.6_ok 目录中是修改过的内核,可以使用以下命令制作补丁文件 linux-2.6.22.6_ok.diff (原始目录在前,修改过的目录在后)。

$ diff -urNwB  linux-2.6.22.6  linux-2.6.22.6_ok > linux-2.6.22.6_ok.diff

  由于 linux-2.6.22.6 是标准的代码,可以从网上自由下载。要发布 linux-2.6.22.6_ok 中所做的修改时,只需要提供补丁文件 linux-2.6.22.6_ok.diff (通常文件很小)。

2. patch 命令

  patch 命令被用来打补丁 -- 就是依据补丁文件来修改原始文件。比如对于上面的例子,可以使用以下命令将补丁文件 linux-2.6.22.6_ok.diff 应用到原始目录 linux-2.6.22.6 上去。假设 linux-2.6.22.6_ok.diff 和 linux-2.6.22.6 位于同一目录下。

$ cd linux-2.6.22.6
$ patch -pl < ../linux-2.6.22.6_ok.diff

  patch 命令中最重要的选项是 “-pn”:补丁文件中指明了要修改的文件路径,“-pn” 表示忽略路径中第n 个斜线之前的目录。

  假设 linux-2.6.22.6_ok.diff 中有如下几行:

diff -urNwB  linux-2.6.22.6/A/B/C.h  linux-2.6.22.6_ok/A/B/C.h
- - - linux-2.6.22.6/A/B/C.h 2007-08-31 02:21:01.00000000 -0400
+++ linux-2.6.22.6_ok/A/B/C.h 2007-09-20 18:11:46.00000000 -0400
......

  使用上述命令打补丁是,patch命令依据 “linux-2.6.22.6/A/B/C.h ”,寻找源文件,“ -p1 ” 表示忽略第1个斜线之前的目录,

  所以要修改的源文件是当前目录下的:

 A/B/C.h

  

Linux下创建 code diff 和 合并 patch的更多相关文章

  1. linux下创建用户

    linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...

  2. linux下创建和删除软、硬链接

    linux下创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制 ...

  3. Linux下创建与解压tar, tar.gz和tar.bz2文件及压缩率对比 | 沉思小屋

    刚 在qq群里面一位仁兄问到文件压缩的命令,平时工作中大多用解压缩命令,要是遇到压缩就现查(这不是一个好习惯),于是整理下Linux下创建与解压 zip.tar.tar.gz和tar.bz2文件及他们 ...

  4. linux下创建用户并且限定用户主目录

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号 一方面可以帮助系统管理员对使用系统的用户进 ...

  5. 4.windows和Linux下创建oracleusername表空间,表,插入数据,用户管理表等操作

    进入超级管理员,运行下面命令 Window下创建数据库.表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 依据实际安装环境进行调整 CREATE TABLESPACE ts ...

  6. 【搬运工】linux下创建用户(一)

    转载:http://www.cnblogs.com/ylan2009/articles/2321177.html linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个 ...

  7. Linux 下创建 sftp 用户并限定目录

    Linux 下创建 sftp 用户并限定目录 1.创建 sftpUser 用户组 [root@XXX ~]# groupadd sftpUser 2.创建 sftpUser 用户并指定目录 [root ...

  8. linux下创建用户(转)

    转自 http://www.cnblogs.com/ylan2009/articles/2321177.html Note: 1, Linux Shell 按Tab键不能补全 发现使用新增的用户登陆的 ...

  9. linux下创建用户 费元星站长

    linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...

随机推荐

  1. 7L-双线链表实现

    链表是基本的数据结构,尤其双向链表在应用中最为常见,LinkedList 就实现了双向链表.今天我们一起手写一个双向链表. 文中涉及的代码可访问 GitHub:https://github.com/U ...

  2. python 函数简介

    一.为什么要有函数? 不加区分地将所有功能的代码垒到一起,问题是: 代码的可读性差. 代码冗余 代码可扩展性差 如何解决? 函数即工具,事先准备工具的过程是定义函数,拿来就用指的是函数调用. 什么是函 ...

  3. 28.5 Integer-- int的包装类

    * 由于基本数据类型只能做一些简单的操作和运算,所以Java为我们封装了基本数据类型,为每种基本数据类型提供了包装类 * 包装类就是封装了基本数据类型的类,为我们提供了更多复杂的方法和一些变量 * * ...

  4. Byte字节

    字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位.最常用的字节是八位的字节,即它包含八位的二进制数. 中文名 字节 外文名 ...

  5. Markdown 语法自用

    Markdown 语法自用 1. 标题 用#来标记 hi hihi hihihi hihihiih hihihihihi hihihihihihi 2. 段落格式 2.1 字体 ​ 斜体:文字两端加上 ...

  6. 通过Java HTTP连接将网络图片下载到本地

    通过Java HTTP连接将网络图片下载到本地   只知道浏览器使用的是HTTP协议,那么如何将网络资源使用JavaHTTP下载下来呢! 这只是一个非常简单的小示例,只是不想每次碰到关于此方面的内容忘 ...

  7. php开发中如何判断 是否微信访问

    在开发中遇到了这样一个需求,仅允许在微信中访问,所以就要对微信浏览器访问进行判断,本篇博文讲述如何判断是否是微信访问. /** * 判断是否微信访问 * @return bool */ functio ...

  8. 用python画出全球疫情趋势变化图

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:谦睿科技 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  9. L8梯度消失、梯度爆炸

    houseprices数据下载: 链接:https://pan.baidu.com/s/1-szkkAALzzJJmCLlJ1aXGQ 提取码:9n9k 梯度消失.梯度爆炸以及Kaggle房价预测 代 ...

  10. PHP常量:JSON_UNESCAPED_UNICODE

    函数: json_encode() - 对变量进行 JSON 编码 说明: json_encode ( mixed $value [, int $options = 0 [, int $depth = ...