Linux 下用 Diff 比较文件差异
一、准备与概念
二、常用命令与选项
diff file1 file2:标准格式输出差异(行号 + 操作)。diff -u file1 file2:统一格式(Unified),显示上下文,便于阅读与生成补丁。diff -c file1 file2:上下文格式(Context),突出差异片段。diff -y -W 80 file1 file2:并排对比,宽度设为 80 列,直观定位差异。diff -i file1 file2:忽略大小写。diff -w file1 file2:忽略所有空白字符(空格、制表符等)。diff -b file1 file2:忽略空白字符的变化(更宽松)。diff -B file1 file2:忽略空白行的差异。diff -r dir1 dir2:递归比较两个目录。diff -q file1 file2:仅显示“是否不同”的摘要信息。diff file1 file2 > diff.patch:将差异保存为补丁文件,便于后续用 patch 应用。三、读懂输出结果
diff file1.txt file2.txt1c1
< Hello world.
---
> Hello Linux.
3c3,4
< A third line here.
---
> A different third line.
> Fourth line added.
c 表示替换(change),a 表示新增(add),d 表示删除(delete);< 属于第一个文件,> 属于第二个文件。diff -u file1.txt file2.txt--- file1.txt 2023-10-27 10:00:00.000000000 +0800
+++ file2.txt 2023-10-27 10:01:00.000000000 +0800
@@ -1,3 +1,4 @@
-Hello world.
+Hello Linux.
This is line two.
-A third line here.
+A different third line.
+Fourth line added.
@@ -1,3 +1,4 @@ 表示变更范围;- 行来自旧文件,+ 行来自新文件,无前缀为公共上下文。四、进阶与替代工具
diff -y -W $(tput cols) file1 file2:按终端宽度并排显示,差异一目了然(也可用 colordiff 为输出着色:colordiff file1 file2)。vimdiff file1 file2:在 Vim 中分屏高亮差异,支持交互式合并(适合代码审查与手工合并)。cmp file1 file2 逐字节比较,定位首个不同字节的偏移;文本文件优先用 diff。五、Notepad++ 在 Linux 下的说明