当前位置: 首页 » unix(重复的事情交给我吧) » basic_description » 文件的比较–diff,cmp

文件的比较–diff,cmp

[文章目录] x

什么时候会用到档案的比对啊?通常是『同一个软件包的不同版本之间,比较配置文件与原始档的差异』。 很多时候所谓的档案比对,通常是用在 ASCII 纯文本档的比对上的!那么比对档案的指令有哪些?最常见的就是 diff 啰! 另外,除了 diff 比对之外,我们还可以藉由 cmp 来比对非纯文本档!同时,也能够藉由 diff 建立的分析檔, 以处理补丁 (patch) 功能的档案呢!就来玩玩先!

一、diff

diff 就是用在比对两个档案之间的差异的,并且是以行为单位来比对的!一般是用在 ASCII 纯文本档的比对上。 由于是以行为比对的单位,因此 diff 通常是用在同一的档案(或软件)的新旧版本差异上! 举例来说,假如我们要将 /etc/passwd 处理成为一个新的版本,处理方式为: 将第四行删除,第六行则取代成为『no six line』,新的档案放置到 /tmp/test 里面,那么应该怎么做?

接下来讨论一下关于 diff 的用法吧!

范例一:比对 passwd.old 与 passwd.new 的差异:

用 diff 比对档案真的是很简单喔!不过,你不要用 diff 去比对两个完全不相干的档案,因为比不出个啥咚咚! 另外, diff 也可以比对整个目录下的差异喔!举例来说,我们想要了解一下不同的开机执行等级 (runlevel) 内容有啥不同?假设你已经知道执行等级 3 与 5 的启动脚本分别放置到 /etc/rc3.d 及 /etc/rc5.d , 则我们可以将两个目录比对一下:

我们的 diff 很聪明吧!还可以比对不同目录下的相同文件名的内容,这样真的很方便喔~

二、cmp

相对于 diff 的广泛用途, cmp 似乎就用的没有这么多了~ cmp 主要也是在比对两个档案,他主要利用『字节』单位去比对, 因此,当然也可以比对 binary file 啰~(还是要再提醒喔, diff 主要是以『行』为单位比对, cmp 则是以『字节』为单位去比对,这并不相同!)

范例一:用 cmp 比较一下 passwd.old 及 passwd.new

看到了吗?第一个发现的不同点在第四行,而且字节数是在第 106 个字节处!这个 cmp 也可以用来比对 binary 啦!

参考资料:
鸟哥私房菜 http://linux.vbird.org/linux_basic/0330regularex.php#doc_compare
夕岚一瞥 http://blog.sina.com.cn/s/blog_60f9c0050101akrv.html


下一篇 :

上一篇 :

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

$(document).ready(function(){ $("#article-index").css('display','none');});