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 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...
随机推荐
- egg.js部署到服务器
关于egg.js项目部署服务器的问题 我使用的是腾讯云centos , 部署前需要确保服务器上安装了mysql, node . mysql下载:https://dev.mysql.com/downlo ...
- SpringBoot系列(五)Mybatis整合完整详细版
SpringBoot系列(五)Mybatis整合 目录 mybatis简介 项目创建 entity dao service serviceImpl mapper controller 1. Mybat ...
- Linux 磁盘管理篇,设备文件
IDE硬盘 /dev/hd[a-d] SCSI/SATA/USB硬盘 /dev/sd[a-p] U盘 /dev/sd[a-p] ...
- 31.1 Exception 的method :getMessage()、 printStackTrace()
package day31_exception; import java.lang.Exception; /* * Throwable的常用方法: String getMessage() :原因 St ...
- VMware 15.5虚拟机安装群晖NAS
一.群晖nas简介 NAS(Network Attached Storage:网络附属存储),按字面意思理解其实就是网络存储器,可以理解为存储资料的网盘,云盘.NAS本身支持多种协议(如NFS.CI ...
- slice使用了解
切片 什么是slice slice的创建使用 slice使用的一点规范 slice和数组的区别 slice的append是如何发生的 复制Slice和Map注意事项 什么是slice Go中的切片,是 ...
- std::forward和std::move
std::forward完美转发 保证参数原来的属性(用在template的参数是引用的时候):左值引用在被转发之后仍然保持左值属性,右值引用在被转发之后依然保持右值属性 void show(int& ...
- 查看jdk 线程 日志
命令:jstack(查看线程).jmap(查看内存)和jstat(性能分析)命令 这些命令 必须 在 linux jdk bin 路径 下执行 eq: ./jstack 10303 即可 如果想把 ...
- 数据结构和算法(Golang实现)(16)常见数据结构-字典
字典 我们翻阅书籍时,很多时候都要查找目录,然后定位到我们要的页数,比如我们查找某个英文单词时,会从英语字典里查看单词表目录,然后定位到词的那一页. 计算机中,也有这种需求. 一.字典 字典是存储键值 ...
- vueCli 运行报错
error 如下: npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! shopping@0.1.0 serve: `vue-cli-service ...