注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

wateras1的个人空间 http://home.eeworld.com.cn/space-uid-361439.html [收藏] [复制] [分享] [RSS]

日志

Linux diff与patch命令用法(转)

已有 104 次阅读2018-5-22 11:19 |个人分类:MTK7688/7628 openwrt alexa

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


① “-u” :表示在比较结果中输出上下文中一些相同的行,这有利于人工定位;
② “-r” :表示递归比较各个子目录下的文件;
③ “-N” :将不存在的文件当作空文件;
④ “-w” :忽略对空格的比较;
⑤ “-B” :忽略对空行的比较。
例如: 假设 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(它通常是很小的) 。


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 -p1 < ../ 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.000000000 -0400
+++ linux-2.6.22.6_ok/A/B/C.h 2007-09-20 18:11:46.000000000 -0400
……

使用上述命令打补丁时, patch 命令根据“linux-2.6.22.6/A/B/C.h” 寻找源文件, “-p1” 表示忽略
第1个斜线之前的目录,所以要修改的源文件是当前目录下的: A/B/C.h。

全部作者的其他最新日志

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-1-22 23:24 , Processed in 0.036021 second(s), 11 queries , Gzip On, MemCache On.

Powered by EEWORLD电子工程世界

© 2019 http://bbs.eeworld.com.cn/

返回顶部