Linux 文件对比黑科技!diff 命令从入门到精通实战
在宁静美好的夜晚,当你面对着两份既相似又各具特色的配置文件时,是否也曾憧憬过,要是有一种工具能够像聪明的小侦探一样,迅速而准确地揭示它们之间的差异,那该有多棒啊?没错,今天,我想向大家介绍Linux中非常实用的一个小帮手——diff工具。不知道大家有没有尝试过使用它呢?它是否也让你感到惊喜和赞叹了呢?
一、什么是diff?
简单来说,diff 是 Linux/Unix 系统中用于逐行对比两个文件或整个目录内容差异的强大命令。它能够精准指出哪些行被添加、删除或修改,并提供多种格式和选项,帮助你以最直观的方式发现变化。
二、基本语法
举个小栗子:
创建两个测试文件:
执行基本对比:
瞬间告诉你哪行不一样,是不是很酷?如下所示:
输出解读指南:
2c2 表示第2行被替换(change)< 标记左侧文件内容标记右侧文件内容d 表示删除(delete)a 表示添加(append)2. 目录对比技巧实用参数组合:
三、输出格式
diff 支持多种输出格式,常见的有普通格式(默认)、统一格式(unified)、上下文格式(context)和并排格式(side-by-side)。
1. 普通格式普通格式是 diff 的默认输出,使用 < 表示文件1中存在但文件2中删除的行,使用 > 表示文件2中新增加的行。
该格式直观但不易读,对于大规模差异不够友好 。
2. 统一格式统一格式在上下文格式基础上进行了简化,将冗余的上下文行合并,只保留变更前后附近的若干行。使用-u或-U行数选项开启。
该格式是开源社区最常用的补丁格式,便于生成和应用补丁。
3. 上下文格式上下文格式使用-c选项,其输出比普通格式更易读,保留完整的上下下文信息:
该格式在一些大型补丁中仍有使用价值。
4. 并排格式并排格式将两个文件内容以两列形式并排显示,使用 -y 选项:
该格式直观且易于人工查看与对比。
四、常用选项
-u 或 --unified[=行数]:显示统一格式,默认上下文为3行。-c 或 --context[=行数]:显示上下文格式。-y 或 --side-by-side:并排显示差异。-w 或 --ignore-all-space:忽略所有空白字符。-b 或 --ignore-space-change:忽略空白变化(多空格视为单空格)。-B 或 --ignore-blank-lines:忽略空行变化。-I PATTERN:忽略匹配给定正则模式的行差异。五、结语
从此告别盲目排查,把繁琐的差异一网打尽。不管是配置变更、脚本调优,还是代码审查,diff 都能成为你最得力的“侦探伙伴”。