温馨提示×

Linux Notepad:如何用Diff比较文件差异

小樊
35
2025-11-15 07:42:28
栏目: 智能运维

Linux 下用 Diff 比较文件差异

一、准备与概念

  • diff 是 Linux 下的文本对比工具,逐行比较两个文件并输出差异;适合查看代码、配置、日志等文本文件的变化。若需比较整个目录树,可结合 -r 递归选项。对于非文本的二进制文件,更适合用 cmp 逐字节判断异同。diff 的输出还能生成补丁,供 patch 使用。

二、常用命令与选项

  • 基础用法
    • 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.txt
    • 输出片段:
      1c1
      < 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 下的说明

  • Notepad++ 主要是 Windows 上的编辑器;在 Linux 环境可通过 Wine 运行。其对比功能依赖 Compare 插件(Windows 上通过“插件管理器”安装)。若在 Linux 上需要图形化对比,更常见做法是直接使用 vimdiff、或安装专门的图形化对比工具。

0