Linux 上 10 个最佳文件比较和差异 (Diff) 工具
在编写程序文件或普通文本文件时,程序员和作者有时想知道两个文件或同一文件的两个版本之间的区别。
当你在 Linux 上比较两个计算机文件时,它们内容之间的差异称为diff。此描述源自对著名的 Unix 命令行文件比较实用程序 diff 的输出的引用。
您可以在 Linux 上使用多种文件比较工具,在这篇评论中,我们将介绍一些在编写代码或其他文本文件时可以利用的最佳基于终端和 GUI 的差异工具。
1. diff 命令
我喜欢从原始的 Unix 命令行工具开始,它可以显示两个计算机文件之间的差异。Diff简单易用,大多数 Linux 发行版都预装了它,它可以逐行比较文件并输出它们之间的差异。
比较两个文件并显示差异。
$ diff file1.txt file2.txt
您可以查看diff 的手册条目以轻松使用它。
# man diff
有一些diff工具的包装器可以增强其功能,其中包括:
colordiff 命令
Colordiff是一个 Perl 脚本,它产生与diff相同的输出,但具有颜色和语法突出显示。它具有可自定义的配色方案。
您可以在 Linux 系统上安装Colordiff ,使用默认包管理器工具yum、dnf、apt-get或apt,如图所示。
$ 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命令用于并排比较两个文件,突出显示它们之间的差异。它将两个文件的内容显示在单独的列中,添加的行以 为前缀">"
,删除的行以 为前缀"<"
,而相同的行则不显示任何前缀。
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
了解了老式的差异工具后,让我们快速转到Linux 上的一些可用的GUI 差异工具。
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]
它的一些功能包括:
- 支持多种差异格式
- 支持目录比较
- 支持读取差异文件
- 可定制的界面
- 创建补丁并将其应用于源文件
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]
您可以查看比较摘要,使用鼠标指针选择文件中的文本行,匹配相邻文件中的行以及编辑不同的文件。
其他功能包括:
- 语法高亮
- 键盘快捷键,方便导航
- 支持无限次撤消
- Unicode 支持
- 支持 Git、CVS、Darcs、Mercurial、RCS、Subversion、SVK 和 Monotone
8. XXdiff – 差异和合并工具
XXdiff是一款功能强大的免费文件和目录比较器和合并工具,可在类 Unix 操作系统上运行,例如 Linux、Solaris、HP/UX、IRIX 和 DEC Tru64。XXdiff 的一个限制是它不支持 Unicode 文件和 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 上找到的唯一可用的差异工具,但它们以提供一些最佳功能而闻名,您可能还想让我们知道您测试过的任何其他差异工具,并认为值得在最佳工具中提及。