最新消息:

linux学习笔记之diff和patch命令

Linux ipcpu 6088浏览

关键字:Linux 学习笔记 运维 系统 命令
一、命令的功能

diff命令的功能为逐行比较两个文本文件,列出其不同之处。可是做成diff记录也就是补丁。
patch就是利用diff制作的补丁来打到文件(夹),使其文件文件夹一致。

二、语法

diff [options] file1 file2
patch [options] ori < patchfile

三、主要参数

diff [options]

-a:将所有文件当作文本文件来处理。
-b或–ignore-space-change  忽略空格造成的不同。
-B或–ignore-blank-lines  忽略空行造成的不同。
-c:使用纲要输出格式。
-H:利用试探法加速对大文件的搜索。
-I:忽略大小写的变化。
-n –rcs:输出RCS格式。
-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。
-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。

patch [options]

-p0 选项要从当前目录查找目的文件(夹)
-p1 选项要忽略掉第一层目录,从当前目录开始查找。
四、diff使用方法的实例说明

例如: diff /usr/xu mine
把目录/usr/xu 中名为mine的文件与当前目录中的mine文件进行比较。
通常输出由下述形式的行组成:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4 这些行类似ed命令把filel转换成file2。字母(a、d和c)之前的行号(n1,n2)是针对file1的,其后面的行号(n3,n4)是针对file2的。字母a、d和c分别表示附加、删除和修改操作。
在上述形式的每一行的后面跟随受到影响的若干行,以”<”打头的行属于第一个文件,以”>”打头的行属于第二个文件。
diff能区别块和字符设备文件以及FIFO(管道文件),不会把它们与普通文件进行比较。
如果file1和file2都是目录,则diff会产生很多信息。
###此处可以使用-y选项将两个文件内容分显示在左右两侧。

五、diff和patch最常用的补丁功能

diff有很多功能平时我们不常用到,最常用的功能莫过于生成patch文件了:
diff -urN old/ new/ > mysoft.patch
参数 -u 表示使用 unified 格式,-r 表示比较目录,-N 表示将不存在的文件当作空文件处理,这样新添加的文件也会出现在patch文件中。

然后在需要应用patch的地方使用下述命令即可:
patch -p0 < mysoft.patch
diff的 -y 命令(长格式为 –side-by-side)可以将屏幕分成左右两部分,来比较两个文件之间的差异。许多图形化的比较工具都有这个功能,但如果只能使用命令行,这个参数 就相当有用了。如果要改变左右各部分的宽度,可以通过 -W (–width)参数来指定。
–ignore-blank-lines 参数可以不检查空白行。这样DOS格式和Unix格式的文件互相比较时,就不至于因为换行符不一致而出现大量的差异。

六、例子

[root@vps ~]# cat ipcpu/123.txt
你好哦啊
[root@vps ~]# cat ipcpu0/123.txt
你好哦啊
吃饭了没呀
[root@vps ~]# diff -urN ipcpu ipcpu0 > ipcpu.patch

[root@vps ~]# patch -p0 < ipcpu.patch
patching file ipcpu/123.txt
[root@vps ~]# cat ipcpu/123.txt
你好哦啊
吃饭了没呀
[root@vps ~]#

关于patch的资料不是很多,还要多多学习。

参考资料:
http://www.9usb.net/200903/linux-diff.html
http://dev.firnow.com/course/6_system/linux/Linuxjs/200875/130414.html

推荐一篇文章:十分钟掌握diff&patch用法

http://hi.baidu.com/thinkinginlamp/blog/item/e78f9c82a1a022b56d811930.html

精彩评论:

 hds | #1
March 9, 2011 at 11:15 am
有些版本的patch p和0 之间要加空格
http://blogold.chinaunix.net/u2/68236/showart_686359.html
这个链接可以参考一下

====

本文恢复自快照

转载请注明:IPCPU-网络之路 » linux学习笔记之diff和patch命令