> 文本处理与搜索 > diff

diff: 比较两个文件的差异(统一格式)

diff 命令分析并输出两个文件或目录之间的差异。特别是 `-u`(统一)选项以统一格式显示结果,该格式显示更改的行及其周围的上下文,这在审查代码更改或在版本控制系统中跟踪更改历史时非常有用。此格式有助于直观地理解哪些部分被添加、删除或修改。

概述

diff -u 以统一格式比较两个文件的内容并输出差异。此格式显示更改的行以及周围几行的上下文,因此可以轻松了解哪些部分如何更改。这对于源代码管理或跟踪配置文件更改历史记录至关重要。

主要特点

  • 以统一格式显示差异
  • 提供更改的上下文
  • 适用于代码审查和版本控制
  • 清晰区分添加/删除/修改

主要选项

diff 命令提供各种选项,但这里我们解释与 `-u` 选项一起常用的选项。

输出格式

比较行为

生成的命令:

请尝试组合命令。

描述:

`diff` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

使用 diff -u 命令的各种示例。

比较两个文件的统一格式差异

diff -u file1.txt file2.txt

以统一格式输出 file1.txt 和 file2.txt 的差异。

递归比较两个目录中的文件

diff -ur dir1 dir2

递归地比较 dir1 和 dir2 目录中的所有文件,并以统一格式输出。

忽略空格变化比较文件

diff -uw file1.txt file2.txt

忽略文件内容中的空格字符(空格、制表符等)的变化,仅比较实际内容差异。

忽略特定模式的行比较文件

diff -u -I '^#' config1.conf config2.conf

忽略注释行(以 # 开头的行),比较 config1.conf 和 config2.conf 文件的差异。

将统一输出保存为补丁文件

diff -u old_file.txt new_file.txt > changes.patch

以统一格式输出两个文件的差异,并将结果保存到 'changes.patch' 文件。此文件可用于 'patch' 命令。

提示与注意事项

有效解释和利用 diff -u 输出结果的提示。

统一输出解释方法

diff -u 的输出使用以下符号表示更改:

  • --- (三个连字符): 表示原始(old)文件的路径和时间戳。
  • +++ (三个加号): 表示新(new)文件的路径和时间戳。
  • @@ -OLD_START,OLD_COUNT +NEW_START,NEW_COUNT @@: '块头',表示更改发生的文件的行号和范围。
  • - (连字符): 表示仅存在于原始文件中的行,表示已删除的行。
  • + (加号): 表示仅存在于新文件中的行,表示已添加的行。
  • (空格): 表示两个文件中都存在的行,表示未更改的上下文行。

与 patch 命令的联动

diff -u 生成的输出可用作 `patch` 命令的输入。这使得您可以轻松地将一个文件的更改应用于另一个文件或撤销更改。例如,使用 `diff -u old_file new_file > changes.patch` 命令生成补丁文件后,可以使用 `patch -p0 < changes.patch` 命令将 `changes.patch` 的更改应用于 `old_file`,使其与 `new_file` 相同。


相关命令

功能上相似或经常一起使用的命令。


相同类别命令