GNU diff

基本语法(Synopsis)

diff [OPTION]... FILE1 FILE2
diff [OPTION]... DIR1 DIR2

[] 表示可选项,... 表示可重复;大写名称表示需要替换的参数。

基本功能与推荐用法

diff 逐行比较文件或目录,统一格式输出可直接用于补丁和代码审查。

diff old.txt new.txt
diff -u old.txt new.txt                 # 统一格式
diff --color=auto -u old.txt new.txt
diff -q old.txt new.txt                 # 只报告是否不同
diff -r dir-old/ dir-new/               # 递归比较目录
diff -u <(sort a.txt) <(sort b.txt)      # 比较排序后内容

退出状态:

  • 0:没有差异。
  • 1:发现差异。
  • 大于 1:发生错误。

推荐脚本显式区分“有差异”和“执行失败”,不要把退出状态 1 一律当异常。 比较 Git 工作区优先使用 git diff,它理解暂存区、重命名和仓库属性。

示例中的选项、参数与子命令

本表解释本页示例实际出现的选项、参数、子命令及必要的辅助命令语法。

语法元素含义
-u生成 unified diff,包含上下文行。
--color=auto在终端支持时自动使用颜色。
-q只报告文件是否不同,不输出差异内容。
-r递归比较目录。
<(COMMAND)zsh 进程替换:把命令输出作为临时文件交给 diff。

官方资料