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
应该让您访问完整的手册。