Linux 使用 diff 分栏对比文本差异
首先看一下帮助文档:
$ diff --help
用法:diff [选项]... 文件列表
逐行比较<各文件>。
长选项的必需参数也是相应短选项的必需参数。
--normal 以正常的 diff 方式输出 (默认)
-q, --brief 只有在文件不同时报告
-s, --report-identical-files 当两个一样时仍然显示结果
-c, -C NUM, --context[=NUM] 同时输出 NUM 行(默认为 3 行)的复制上下文内容
-u, -U 数量, --unified[=数量] 输出 <数量>(默认为 3)行一致化上下文
-e, --ed 以 ed script 方式输出
-n, --rcs 以 RCS diff 格式输出
-y, --side-by-side 以两栏的格式输出
-W, --width=数量 每行显示最多 <数量>(默认 130)个字符
--left-column 当有两行相同时只显示左边栏的一行
--suppress-common-lines 当有两行相同时不显示
-p, --show-c-function 显示每个变更位于哪个 C 函数中
-F, --show-function-line=正则 显示匹配给定<正则>表达式的最近一行
--label 标签 使用给定<标签>替代文件名和时间戳
(可以重复)
-t, --expand-tabs 将输出中的 tab 转换成空格
-T, --initial-tab 每行先加上 tab 字符,使 tab 字符可以对齐
--tabsize=数字 TAB 格的宽度,默认为 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=模式 排除匹配 <模式> 的文件
-X, --exclude-from=文件 排除所有匹配在<文件>中列出的模式的文件
-S, --starting-file=文件 当比较目录時,由<文件>开始比较
--from-file=文件1 将<文件1>和操作数中的所有文件/目录作比较;
<文件1>可以是目录
--to-file=文件2 将操作数中的所有文件/目录和<文件2>作比较;
<文件2>可以是目录
-i, --ignore-case 忽略文件内容大小写的区别
-E, --ignore-tab-expansion 忽略由制表符宽度造成的差异
-Z, --ignore-trailing-space 忽略每行末端的空格
-b, --ignore-space-change 忽略由空格数不同造成的差异
-w, --ignore-all-space
用的时候可以横排查看不同的地方:
$ diff pmxcfs.kylin.e pmxcfs.debian10.e -y -W 180
使用 -y 表示两列查看,使用 -W 设定宽度,这样就可以在终端里分栏查看文件差异:
