2024年3月17日发(作者:)

diff 使用方法

diff 是 Linux/Unix 常用的比较工具,用于比较两个文件或两个目录的内容差异。

diff 命令一个非常好用的特性是标记不同处的能力,它可以显示文件或目录间不同的地

方,并且能够告诉我们每一行的不同处是什么。

一、比较两个文件的差异

使用 diff 命令比较两个文件的差异,一般的命令格式为:

$ diff [options] file1 file2

下面是一些常用的选项:

- -i, --ignore-case:忽略大小写

- -w, --ignore-all-space:忽略所有空格

- -B, --ignore-blank-lines:忽略空白行

- -c, --context:输出上下文,更友好地显示差异

- -u, --unified:使用 unified 格式输出差异, 更为详尽

举个例子:比较两个文件 “file1” 和 “file2”,并输出所有的差异。

输出文件的差异格式如下:

1c1

< Hello World!

---

> Hello Linux!

第一行(1c1)告诉我们这个差异发生在第一行。下一行(< Hello World!)告诉我们

这是来自第一个文件的内容,两个文件之间的区别是第二行(---),后面的 Hello Linux!

展示了来自另一个文件的内容。

如果差异的行数很多,我们也可以指定打印上下文的行数,比如下面输出 3 行上下

文的 diff:

如果我们想要一些更有用的信息,可以使用 “-u” 选项,比如:

这里展示的是统一格式的 diff 形式,输出如下:

--- file1 2019-06-26 16:57:50.498721617 +0300

+++ file2 2019-06-26 16:57:40.494720755 +0300

@@ -1 +1 @@

-Hello World!

+Hello Linux!

此处标记两个文件的最后修改时间、“-” 和 “+” 表示出现在文件1或文件2中,

注意新添加或删除的行的标记必须至少有一个空格,否则 diff 会认为这是一个难以处理

的标记。

我们也可以比较两个目录的差异,这常常用于目录结构改变等情况比较实用,使用

diff 命令比较两个目录的差异格式为:

$ diff -r dir1 dir2

以上命令将递归比较目录 dir1 和 dir2 的差异。注意,-r 参数指定进行递归比

较。

三、忽略某些比较

如果有些特定的行不需要被比较,可以使用 -I 选项,它不比较行包含的那些忽略字

符串,如:

这将忽略文本中包含 “yang” 字符串的行。

对于经常需要比较文件的人来说,比较文件的输出格式可能显得有些令人不舒适,我

们可以使用 colordiff 作为替代方案。colordiff 带有一个火柿的命令行界面,生成的

差异使用 ANSI 颜色编码装饰,看起来非常漂亮。

安装 colordiff 可以使用包管理器进行安装。在 Ubuntu 和 Debian 上安装如下:

sudo apt-get install colordiff

在 Fedora 和 CentOS 上安装如下:

安装完成后,使用 diff 命令和 colordiff 命令一样,例如:

此处输出的结果非常漂亮。

总结

差异工具是我们必不可少的工具之一,diff 命令在比较两个文件或两个目录的内容

差异时非常实用。在 Linux 中,diff 命令是一个必不可少的工具之一,总体来说非常好

用。在本文中,我们讨论了 diff 命令如何比较两个文件或两个目录的内容差异,以及常

用的选项和使用方法。我们还介绍了如何使用 colordiff 使输出更加美观。希望这篇文

章对你有所帮助。