diff
是一个命令行程序,可让您逐行比较两个文件。它还可以比较目录的内容。
diff
命令最常用于创建一个补丁,其中包含可以使用patch
命令应用的一个或多个文件之间的差异。
diff
命令的语法形式是diff [OPTION]... FILES
。其中FILES
可以是一个或者多个文件。OPTION
是diff命令的选项。
diff
命令可以以几种格式显示输出,其中最常见的是普通格式,上下文格式和统一格式。
输出包含文件相同与不相同的信息。如果文件匹配,则不会产生输出。要将命令输出保存到文件,请使用重定向运算符>
。
在本教程中,我们将使用file1
和file2
两个文件来说明diff
命令的工作方式。
diff file1 file2 > patch
Ubuntu
Arch Linux
Debian
CentOS
Fedora
Kubuntu
Ubuntu
Debian
Arch Linux
Centos
Fedora
标准格式
在没有任何选项是运行diff命令最简单的形式,在这种情况下diff
命令比较两个文本文件,它会以标准格式生成输出。
标准格式输出由描述差异的一个或多个部分组成。与0a1
,2d2
和4c4,5
类似的字符称为更改命令。
每个更改命令从左到右包含这些内容,第一个文件中的行号或行范围。更改字符。第二个文件中的行号或行范围。
更改字符可以是,a
添加的行。c
换行。d
删除行。更改命令后跟已删除的完整行<
,添加到文件中完整行符号是>
。
change-command
to-file-line...
diff file1 file2
0a1
> Kubuntu
2d2
< Arch Linux
4c4,5
Arch Linux
> Centos
让我们解释一下输出。0a1
在file1的开头添加第二个文件的第一行。> Kubuntu
表示添加Kubuntu
到第一个文件的第一行。
2d2
在第一个文件删除第二行2
。d
符号后的2
表示在第二个文件没有被删除。< Arch Linux
表示被删除的行。
4c4,5
使用第二个文件中的4-5
行替换第一个文件中的第5
行。
< CentOS
该行在第一个文件中被替换。---
分隔符。第二个文件的行> Centos
替换第一个文件> Arch Linux
行。
忽略区分大小写
在上述示例中您可能会注意到,diff
命令默认区分大小写。使用-i
选项指示diff
忽略大小写。
diff -ui file1 file2
--- file1 2019-11-25 21:00:26.422426523 +0100
+++ file2 2019-11-25 21:00:36.342231668 +0100
@@ -1,6 +1,7 @@
+Kubuntu
Ubuntu
-Arch Linux
Debian
+Arch Linux
CentOS
Fedora
结论
比较文本文件的差异是Linux系统管理员最常见的任务之一。diff
命令逐行比较文件。如有任何疑问,请在下面发表评论。