Linux下创建 code diff 和 合并 patch
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的更多相关文章
- linux下创建用户
linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...
- linux下创建和删除软、硬链接
linux下创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制 ...
- Linux下创建与解压tar, tar.gz和tar.bz2文件及压缩率对比 | 沉思小屋
刚 在qq群里面一位仁兄问到文件压缩的命令,平时工作中大多用解压缩命令,要是遇到压缩就现查(这不是一个好习惯),于是整理下Linux下创建与解压 zip.tar.tar.gz和tar.bz2文件及他们 ...
- linux下创建用户并且限定用户主目录
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号 一方面可以帮助系统管理员对使用系统的用户进 ...
- 4.windows和Linux下创建oracleusername表空间,表,插入数据,用户管理表等操作
进入超级管理员,运行下面命令 Window下创建数据库.表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 依据实际安装环境进行调整 CREATE TABLESPACE ts ...
- 【搬运工】linux下创建用户(一)
转载:http://www.cnblogs.com/ylan2009/articles/2321177.html linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个 ...
- Linux 下创建 sftp 用户并限定目录
Linux 下创建 sftp 用户并限定目录 1.创建 sftpUser 用户组 [root@XXX ~]# groupadd sftpUser 2.创建 sftpUser 用户并指定目录 [root ...
- linux下创建用户(转)
转自 http://www.cnblogs.com/ylan2009/articles/2321177.html Note: 1, Linux Shell 按Tab键不能补全 发现使用新增的用户登陆的 ...
- linux下创建用户 费元星站长
linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...
随机推荐
- MyBatis(七):使用注解替代xml文件
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- TCP协议的安全性分析
有算法就有破解法,因为它们都遵循了一定的数据结构和数学知识.所以网络安全是一个相对的概念,不可能出现绝对的安全!作为当今最流行的网络协议--TCP也是如此.那么TCP的安全问题究竟是哪些因素引起的呢? ...
- TP基础
一.目录结构 解压缩到web目录下面,可以看到初始的目录结构如下: www WEB部署目录(或者子目录)├─index.php 入口文件├─README.md README文件├─Applicatio ...
- java day04记录
本文主要记录arr数组用法.count计算.arr倒排序技巧案例 package day4homework; import java.util.Scanner; /* 从键盘上输入10个整数,合法值位 ...
- python3(二十二) oop
""" 面向对象编程 """ __author__ = 'shaozhiqi' # 面向对象的程序设计把计算机程序视为一组对象的集合,而每个 ...
- 【python实现卷积神经网络】padding2D层实现
代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ...
- CentOS7.5 使用Docker部署Jumpserver
1.环境准备 # 查看系统版本 $ cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) # 查看内核版本 $ uname -a L ...
- 动态规划_01背包_从Dijikstra和Floyd入手,彻底理解01背包
dp一直是短板,现在从最基础的地方开始补 给定背包总容量 M ,n个商品选择,分别有价值vi,占量wi,从中取商品放入背包,令.容量和W=Σwi不超过M,令背包中的价值和V=Σvi最大 然后取法有很多 ...
- Python 开发工具推荐
对于开发工具,仁者见仁智者见智,关键是自己喜欢,用着顺手就好,不用刻意去追求别人用的是什么工具. 这里给大家主要推荐三款工具,分别是PyCharm.Sublime Text 3.VS Code,因为这 ...
- Delphi TMemo 可以显示、编辑多行文本
多行编辑框组件(TMemo)TMemo组件可以显示.编辑多行文本,是一个标准的Windows多行编辑组件.对一些比较多的文本内容可以利用TMemo组件来显示.编辑. 1.TMemo组件的典型用法 TM ...