网站搜索

Linux 中 10 个最佳文件比较和差异 (Diff) 工具


在编写程序文件或普通文本文件时,程序员和编写者有时想知道两个文件或同一文件的两个版本之间的区别。

当您在 Linux 上比较两个计算机文件时,它们内容之间的差异称为差异。此描述源自对 diff 输出的引用,diff 是著名的 Unix 命令行文件比较实用程序。

您可以在 Linux 上使用多种文件比较工具,在本次评测中,我们将介绍一些您在编写代码或其他文本文件时可以利用的最佳基于终端和 GUI 的比较工具。

1. diff 命令

我喜欢从原始的 Unix 命令行工具开始,它可以显示两个计算机文件之间的差异。 Diff简单易用,大多数Linux发行版都预装了它,它可以逐行比较文件并输出它们之间的差异。

比较两个文件并显示差异。

diff file1.txt file2.txt

您可以查看 diff 的手动输入来轻松使用它。

man diff

diff 工具有一些包装器可以增强其功能,其中包括:

colordiff 命令

Colordiff 是一个 Perl 脚本,它生成与 diff 相同的输出,但具有颜色和语法突出显示。它具有可定制的配色方案。

您可以使用名为 yum、dnf 和 apt-get 或 apt 的默认包管理器工具在 Linux 系统上安装 Colordiff,如图所示。

sudo apt install colordiff         [On Debian, Ubuntu and Mint]
sudo yum install colordiff         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/colordiff  [On Gentoo Linux]
sudo apk add colordiff             [On Alpine Linux]
sudo pacman -S colordiff           [On Arch Linux]
sudo zypper install colordiff      [On OpenSUSE]    

递归比较目录。

colordiff file1.txt file2.txt

您可以查看 colordiff 的手动输入,如图所示。

man colordiff

wdiff 命令

wdiff 实用程序是 diff 命令的前端,用于逐字比较文件。该程序在比较两个文本中的单词更改以及段落已重新填充时非常有用。

要在 Linux 系统上安装 wdiff,请运行:

sudo apt install wdiff         [On Debian, Ubuntu and Mint]
sudo yum install wdiff         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/wdiff  [On Gentoo Linux]
sudo apk add wdiff             [On Alpine Linux]
sudo pacman -S wdiff           [On Arch Linux]
sudo zypper install wdiff      [On OpenSUSE]    

并排显示两个文件,突出显示单词级别的差异。

wdiff file1.txt file2.txt

使用wdiff手册了解如何在Linux上使用它。

man wdiff

2.Vimdiff命令

diff 实用程序相比,Vimdiff 的工作方式更加先进,它允许用户编辑最多四个版本的文件,同时显示它们的差异。当您运行它时,Vimdiff 使用 Vim 文本编辑器打开两个或三个或四个文件。

要使用 vimdiff,您需要在系统上安装 Vim,但如果未安装,您可以使用包管理器安装它。

sudo apt install vim         [On Debian, Ubuntu and Mint]
sudo yum install vim         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/vim  [On Gentoo Linux]
sudo apk add vim             [On Alpine Linux]
sudo pacman -S vim           [On Arch Linux]
sudo zypper install vim      [On OpenSUSE]    

要使用 vimdiff 比较两个文件,您可以执行以下命令。

vimdiff file1.txt file2.txt

您还可以使用 vimdiff 来比较三个文件。

vimdiff file1.txt file2.txt file3.txt

有关更详细的信息和使用选项,您可以通过运行访问手册页。

man vimdiff

3. 差异

sdiff 命令用于并排比较两个文件,突出显示它们之间的差异。它在单独的列中显示两个文件的内容,添加的行以 ">" 为前缀,删除的行以 "<" 为前缀,公共行则显示为不带任何前缀。

sdiff 命令通常随大多数 Linux 发行版的标准安装一起提供。但是,如果尚未安装,您可以使用包管理器安装它。

sudo apt install diffutils         [On Debian, Ubuntu and Mint]
sudo yum install diffutils         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/diffutils  [On Gentoo Linux]
sudo apk add diffutils             [On Alpine Linux]
sudo pacman -S diffutils           [On Arch Linux]
sudo zypper install diffutils      [On OpenSUSE]    

比较两个文件并并排显示差异。

sdiff file1.txt file2.txt

了解了老式的 diff 工具后,让我们快速转向 Linux 上可用的一些 GUI diff 工具。

4. 孔帕雷

Kompare 是一个图形化差异和合并工具,允许用户比较和查看文件之间的差异并合并它们。

要在 Linux 发行版上安装 Kompare,您可以使用特定于您的系统的包管理器。

sudo apt install kompare         [On Debian, Ubuntu and Mint]
sudo yum install kompare         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/kompare  [On Gentoo Linux]
sudo apk add kompare             [On Alpine Linux]
sudo pacman -S kompare           [On Arch Linux]
sudo zypper install kompare      [On OpenSUSE]    

它的一些功能包括:

  • 支持多种差异格式
  • 支持目录比较
  • 支持读取 diff 文件
  • 可定制的界面
  • 创建补丁并将其应用到源文件

5. 差异合并

DiffMerge 是一个用于比较和合并文件的跨平台 GUI 应用程序。它有两个功能引擎,Diff引擎显示两个文件之间的差异,并支持行内突出显示和编辑,以及Merge引擎输出之间更改的行三个文件。

它具有以下特点:

  • 支持目录比较
  • 文件浏览器集成
  • 高度可配置

6. Meld – 差异工具

Meld 是一个轻量级 GUI 差异和合并工具,使用户能够比较文件、目录以及版本控制的程序。专为开发人员打造,它具有以下功能:

  • 文件和目录的两路和三路比较
  • 当用户输入更多单词时更新文件比较
  • 通过使用自动合并模式和对更改块的操作使合并变得更容易
  • 使用可视化轻松进行比较
  • 支持 Git、Mercurial、Subversion、Bazaar 等等

要在 Linux 上安装 Meld,您可以使用包管理器从官方存储库安装它。

sudo apt install meld         [On Debian, Ubuntu and Mint]
sudo yum install meld         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/meld  [On Gentoo Linux]
sudo apk add meld             [On Alpine Linux]
sudo pacman -S meld           [On Arch Linux]
sudo zypper install meld      [On OpenSUSE]    

7. Diffuse – GUI 差异工具

Diffuse 是另一种流行的、免费的、小型且简单的 GUI 差异和合并工具,您可以在 Linux 上使用。它用Python编写,提供两大功能,即:文件比较和版本控制,允许文件编辑和合并文件,并输出文件之间的差异。

要在 Linux 上安装 Diffuse,您可以使用包管理器,如图所示。

sudo apt install diffuse         [On Debian, Ubuntu and Mint]
sudo yum install diffuse         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/diffuse  [On Gentoo Linux]
sudo apk add diffuse             [On Alpine Linux]
sudo pacman -S diffuse           [On Arch Linux]
sudo zypper install diffuse      [On OpenSUSE]    

您可以查看比较摘要、使用鼠标指针选择文件中的文本行、匹配相邻文件中的行以及编辑不同的文件。

其他功能包括:

  • 语法高亮
  • 方便导航的键盘快捷键
  • 支持无限制撤消
  • 统一码支持
  • 支持 Git、CVS、Darcs、Mercurial、RCS、Subversion、SVK 和 Monotone

8. XXdiff – 差异和合并工具

XXdiff 是一款免费、功能强大的文件和目录比较器及合并工具,可在 Linux、Solaris、HP/UX、IRIX 和 DEC Tru64 等类 Unix 操作系统上运行。 XXdiff 的局限性之一是它缺乏对 Unicode 文件和 diff 文件的内联编辑的支持。

它具有以下功能列表:

  • 两个、三个文件或两个目录的浅层和递归比较
  • 水平差异突出显示
  • 交互式合并文件并保存结果输出
  • 支持合并审查/监管
  • 支持外部 diff 工具,例如 GNU diff、SIG diff、Cleareddiff 等
  • 可使用脚本进行扩展
  • 使用资源文件和许多其他次要功能完全可定制

9. KDiff3 – – 差异和合并工具

KDiff3 是另一个由 KDevelop 制作的很酷的跨平台差异和合并工具,它适用于所有类 Unix 平台,包括 Linux 和 Mac OS X、Windows。

要在 Linux 上安装 KDiff3,您可以使用软件包管理器,如图所示。

sudo apt install kdiff3         [On Debian, Ubuntu and Mint]
sudo yum install kdiff3         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/kdiff3  [On Gentoo Linux]
sudo apk add kdiff3             [On Alpine Linux]
sudo pacman -S kdiff3           [On Arch Linux]
sudo zypper install kdiff3      [On OpenSUSE]    

它可以比较或合并两到三个文件或目录,并具有以下显着功能:

  • 逐行、逐字符地表示差异
  • 支持自动合并
  • 内置编辑器处理合并冲突
  • 支持 Unicode、UTF-8 和许多其他编解码器
  • 允许打印差异
  • Windows 资源管理器集成支持
  • 还支持通过字节顺序标记“BOM”自动检测
  • 支持手动对齐线
  • 直观的 GUI 等等

10.TkDiff

TkDiff 也是一个跨平台、易于使用的 Unix diff 工具的 GUI 包装器,它提供两个输入文件之间差异的并排视图。它可以在 Linux、Windows 和 Mac OS X 上运行。

此外,它还有一些其他令人兴奋的功能,包括差异书签、用于轻松快速导航的差异图形地图等等。

要在 Linux 上安装 TkDiff,您可以使用软件包管理器,如图所示。

sudo apt install tkdiff         [On Debian, Ubuntu and Mint]
sudo yum install tkdiff         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tkdiff  [On Gentoo Linux]
sudo apk add tkdiff             [On Alpine Linux]
sudo pacman -S tkdiff           [On Arch Linux]
sudo zypper install tkdiff      [On OpenSUSE]    
结论

阅读了一些最佳文件和目录比较器以及合并工具的评论后,您可能想尝试其中的一些。

这些可能不是您在 Linux 上可以找到的唯一可用的比较工具,但众所周知它们提供了一些最好的功能,您可能还想让我们知道您已经测试过并认为值得的任何其他比较工具被提到最好的。