Shell Daily 2026-01-23: 直观对比 (Diff Side-by-Side)
你是否因为看不懂 diff file1 file2 输出的 < 和 > 符号而感到头大?
默认的 diff 输出格式对人类极其不友好,尤其是在对比两个几百行的配置文件时,脑补“删除了这行、添加了那行”的过程非常痛苦。其实,你根本不需要安装图形化的 Beyond Compare,标准的 GNU Diff 自带了并排对比模式。
怎么用
使用 -y (side-by-side) 参数,将差异以左右分栏的形式展示,并在中间用简单的符号标记变化。
-
diff -y [file1] [file2]:开启并排模式。 -
关键参数:
-
-W [num]:指定宽度(默认 130 列),防止大屏幕上内容折行。 -
--suppress-common-lines:神技。只显示有差异的行,隐藏相同的行,让视线聚焦重点。 -
兼容性:Linux (GNU Diffutils) 标配。macOS 原生支持。
适用场景
- 配置审计:对比
nginx.conf和nginx.conf.bak到底改了哪几行。 - 代码检视:快速查看本地脚本与服务器版本的微小差异。
示例 1:清爽的差异报告
对比两个版本,且不看那些没变的内容(降噪)。
# | 表示修改,< 表示左边独有,> 表示右边独有
$ diff -y -W 120 --suppress-common-lines config_v1.yaml config_v2.yamldb_host: 192.168.1.10 | db_host: 10.0.0.5
timeout: 30 <> retries: 5
示例 2:全量对比与管道结合
结合 colordiff (如果已安装) 或直接输出,查看完整上下文。
# 这种视图在宽屏终端上阅读体验极佳
$ diff -y /etc/ssh/sshd_config /etc/ssh/sshd_config.default
(注:加上 --suppress-common-lines 后,diff 的可读性提升了至少 10 倍,是终端里最接近 GUI 体验的文本对比方式。)