Hello! 欢迎来到小浪云!


云服务器Linux diff 命令详解及应用


avatar
小浪云 2024-12-10 20


在日常开发和维护中,尤其是在处理多版本文件、目录对比或者文档生成时,我们常常需要分析不同版本之间的区别。dif命令(即 differences)是一个非常有用的工具,它可以逐行比较文件或目录,并显示差异。

 

diff 命令简介

diff 命令是 Linux 系统中内置的工具,可以帮助我们快速发现两个文件或目录的不同。如果文件相同,则不会有任何输出;如果有差异,则会以特定格式展示修改细节。diff 不仅适用于文件比较,还可以递归比较目录中的文件差异,非常灵活和实用。

 

适用的 Linux 版本

diff 命令在大部分 Linux 发行版中都已预装,例如 UbuntuDebian、Fedora 和 CentOS 等。

如果未安装,可以使用包管理器安装:

基于 Debian 的系统(如 Ubuntu):

sudo apt-get install diffutils

 

基于 Red Hat 的系统(如 CentOS):CentOS 7:

sudo yum install diffutils

 

CentOS 8:

sudo dnf install diffutils

 

diff 命令基本语法

diff [选项] 文件1 文件2

常用选项及功能说明

选项 描述
-i 忽略大小写差异
-w 忽略所有空格差异
-B 忽略空白行差异
-c 以 C 语言风格显示上下文信息
-u 以统一格式显示上下文信息(类似 Git 的输出风格)
-y 并排比较文件内容
-r 递归比较目录
-q 仅显示文件是否存在差异,不输出具体差异内容
-b 忽略行尾的多余空白和制表符
-n 以 RCS 格式输出差异(适用于版本控制场景)

 

diff 命令应用实例

1. 比较两个文件

diff file1.txt file2.txt

输出文件 file1.txt 和 file2.txt 的差异内容。

 

2. 忽略大小写比较

diff -i file1.txt file2.txt

忽略大小写差异,只比较内容。

 

3. 忽略行内空格

diff -w file1.txt file2.txt

适用于行内空格差异不重要的场景。

 

4. 显示上下文信息

diff -c file1.txt file2.txt

用 C 语言风格显示差异及其上下文信息。

 

5. 使用 Git 风格的输出

diff -u file1.txt file2.txt

生成类似 Git 中的差异格式,清晰地标记修改、删除或新增行。

 

6. 并排显示差异

diff -y file1.txt file2.txt

两文件的内容并排显示,直观对比差异。

 

7. 比较两个目录

diff -r dir1/ dir2/

递归比较两个目录,包括子目录和文件。

 

8. 仅显示差异文件名

diff -q dir1/ dir2/

不输出具体差异内容,只显示有差异的文件名。

 

9. 生成 Patch 文件

diff -Naur olddir newdir > update.patch

通过比较旧版本和新版本目录,生成差异补丁文件 update.patch。

 

10. 使用 Diffstat 查看统计信息

diff -uN dir1/ dir2/ | diffstat

以图表形式显示新增、修改或删除的行数。

相关阅读