命令行手册

Man » diff 手册在线 - 详细的 diff 手册页在线文档

🌍
diff - 逐行比较文件

概要

diff [选项]... 文件

描述

逐行比较文件。

长选项的必需参数对短选项也是必需的。

--normal
输出常规 diff(默认)

-q, --brief
仅在文件不同时报告

-s, --report-identical-files
报告两个文件是否相同

-c, -C NUM, --context[=NUM]
输出 NUM(默认 3)行上下文

-u, -U NUM, --unified[=NUM]
输出 NUM(默认 3)行统一上下文

-e, --ed
输出 ed 脚本

-n, --rcs
输出 RCS 格式的 diff

-y, --side-by-side
以两列形式输出

-W, --width=NUM
输出最多 NUM(默认 130)列

--left-column
仅输出公共行的左列

--suppress-common-lines
不输出公共行

-p, --show-c-function
显示每个更改位于哪个 C 函数中

-F, --show-function-line=RE
显示与 RE 匹配的最新行

--label 标签
使用标签代替文件名和时间戳(可以重复)

-t, --expand-tabs
在输出中将制表符扩展为空格

-T, --initial-tab
通过在行首添加制表符来使制表符对齐

--tabsize=NUM
制表符停止在每 NUM(默认 8)列

--suppress-blank-empty
抑制空输出行之前的空格或制表符

-l, --paginate
通过“pr”传递输出以进行分页

-r, --recursive
递归比较找到的任何子目录

--no-dereference
不要跟随符号链接

-N, --new-file
将缺少的视为空文件

--unidirectional-new-file
将缺少的第一个文件视为空文件

--ignore-file-name-case
比较文件名时忽略大小写

--no-ignore-file-name-case
比较文件名时考虑大小写

-x, --exclude=PAT
排除与 PAT 匹配的文件

-X, --exclude-from=FILE
排除与 FILE 中的任何模式匹配的文件

-S, --starting-file=FILE
在比较目录时从 FILE 开始

--from-file=FILE1
将 FILE1 与所有操作数进行比较;FILE1 可以是一个目录

--to-file=FILE2
将所有操作数与 FILE2 进行比较;FILE2 可以是一个目录

-i, --ignore-case
忽略文件内容中的大小写差异

-E, --ignore-tab-expansion
忽略由于制表符扩展而产生的更改

-Z, --ignore-trailing-space
忽略行尾的空格

-b, --ignore-space-change
忽略空格量的变化

-w, --ignore-all-space
忽略所有空格

-B, --ignore-blank-lines
忽略所有行都是空行的更改

-I, --ignore-matching-lines=RE
忽略所有行都匹配 RE 的更改

-a, --text
将所有文件视为文本

--strip-trailing-cr
删除输入中的尾随回车符

-D, --ifdef=NAME
使用“#ifdef NAME”diffs 输出合并的文件

--GTYPE-group-format=GFMT
使用 GFMT 格式化 GTYPE 输入组

--line-format=LFMT
使用 LFMT 格式化所有输入行

--LTYPE-line-format=LFMT
使用 LFMT 格式化 LTYPE 输入行

这些格式选项提供了对 diff 输出的细粒度控制

,推广了 -D/--ifdef。

LTYPE 是“old”、“new”或“unchanged”。
GTYPE 是 LTYPE 或“changed”。

GFMT(仅限)可以包含:

%<     来自 FILE1 的行

%>     来自 FILE2 的行

%=     FILE1 和 FILE2 共有的行

%[-][WIDTH][.[PREC]]{doxX}LETTER
printf 样式的 LETTER 的规范

LETTER 是新组的以下内容,小写用于旧组:

F      第一行号

L      最后一行号

N      行数 = L-F+1

E      F-1

M      L+1

%(A=B?T:E)
如果 A 等于 B,则为 T,否则为 E

LFMT(仅限)可以包含:

%L     行的内容

%l     行的内容,不包括任何尾随换行符

%[-][WIDTH][.[PREC]]{doxX}n
printf 样式的输入行号的规范

GFMT 和 LFMT 都可以包含:

%%     %

%c'C'  单个字符 C

%c'\OOO'
具有八进制代码 OOO 的字符

C      字符 C(其他字符表示自身)

-d, --minimal
尝试努力找到更小的一组更改

--horizon-lines=NUM
保留公共前缀和后缀的 NUM 行

--speed-large-files
假定大型文件和许多分散的小更改

--color[=WHEN]
着色输出;WHEN 为“never”、“always”或“auto”;纯 --color 意味着 --color='auto'

--palette=PALETTE
在 --color 处于活动状态时使用的颜色;PALETTE 是一个冒号分隔的 terminfo 功能列表

--help 显示此帮助并退出

-v, --version
输出版本信息并退出

FILES 是“FILE1 FILE2”或“DIR1 DIR2”或“DIR FILE”或“FILE DIR”。 如果提供了 --from-file 或 --to-file,则对 FILE(s) 没有限制。 如果一个 FILE 是“-”,则从标准输入读取。 退出状态为 0(如果输入相同),1(如果不同),2(如果出现问题)。

作者

由 Paul Eggert、Mike Haertel、David Hayes、Richard Stallman 和 Len Tower 编写。

报告错误

报告错误至:_ GNU diffutils 主页:[https://www.gnu.org/software/diffutils/] 使用 GNU 软件的一般帮助:[https://www.gnu.org/gethelp/]

版权

版权所有 © 2025 Free Software Foundation, Inc。 许可证 GPLv3+:GNU GPL 版本 3 或更高版本 [https://gnu.org/licenses/gpl.html]。 这是自由软件:您可以自由地修改和重新分发它。 在法律允许的范围内,不存在任何保修。

参见

wdiff(1), cmp(1), diff3(1), sdiff(1), patch(1)

diff 的完整文档维护为 Texinfo 手册。 如果 info 和 diff 程序在您的站点上正确安装,则命令

info diff

应该让您访问完整的手册。