概述
diff
是linux下的重要命令之一,可以逐行比较文本文件的差异,与cmp
和comm
命令不同的地方是,它可以告诉我们一个文件中的哪些行需要更改,以使两个文件相同。
在diff
命令中,有一些特殊的符号需要记牢:
a : add
c : change
d : delete
diff 语法
diff [options] File1 File2
我们有两个名为 a.txt 和 b.txt 的文件,其中包含我们喜欢的水果。
不加选项
如果直接使用diff
不加任何选项,那么结果是:
输出结果告诉我们:需要更改第一个文件中的第三行到第五行,才能与第二个文件相等。
添加选项
Linux 系统提供了两种不同的方式来查看 diff 命令的输出,即上下文模式和统一模式。
上下文模式
要查看上下文模式中的差异,请使用-c 选项。让我们通过例子来理解这一点,我们有两个文件 a.txt 和 b.txt:
***
代表第一个文件,---
代表第二个文件,***************
这个代表的是分割线。
这个输出的前两行显示了关于文件1和文件2的信息。它列出了每个文件的文件名、修改日期和修改时间。
分割线显示两个文件具体不同的地方,!
感叹号表示不同。
统一模式
要在统一模式下查看差异,请使用-u 选项。它类似于上下文模式,但不显示任何冗余信息或以简洁的形式显示信息。
与上下文模式不同的地方是,第一个文件由---
表示,第二个文件由+++
表示。 这个输出的前两行显示了关于文件1和文件2的信息。它列出了每个文件的文件名、修改日期和修改时间。
@@
里面-
代表的是第一个文件,+
代表第二个文件,后面跟的是行号。输出结果告诉我们:第一个文件减去 avocado、cherry、coconut,并且加上date、durian、grape、grapefruit才能与第二文件相同。
补充
diff
在默认情况下是忽略大小写的,如果要对大小写敏感需要添加选项-i
。若要查看diff
版本信息可以使用下面的命令: