10 công cụ so sánh và phân biệt tệp (diff command) cho Linux

Trong quá trình viết các tệp tin chương trình hoặc tệp tin văn bản thông thường, các lập trình viên và nhà văn đôi khi muốn biết sự khác biệt giữa hai tệp tin hoặc hai phiên bản của cùng một tệp tin. Khi bạn so sánh hai tệp tin trên Linux, sự khác biệt giữa nội dung của chúng được gọi là diff. Mô tả này ra đời nhờ một tài liệu tham khảo đến đầu ra của diff command, công cụ so sánh tệp tin dòng lệnh nổi tiếng trên Unix.

9 Best Linux File Diff or Comparison Tools
9 Công cụ so sánh tệp tin Linux tốt nhất

Có nhiều công cụ so sánh tệp tin bạn có thể sử dụng trên Linux và trong bài đánh giá này, chúng ta sẽ xem xét một số công cụ so sánh dựa trên giao diện dòng lệnh và giao diện đồ họa tốt nhất mà bạn có thể tận dụng trong quá trình viết mã hoặc tệp tin văn bản khác.

1. diff Command

Bắt đầu bằng công cụ dòng lệnh Unix gốc chứng thực cho bạn sự khác biệt giữa hai tệp tin máy tính. Diff đơn giản và dễ sử dụng, nó được cài sẵn trên hầu hết các bản phân phối Linux, so sánh tệp tin theo dòng và xuất ra sự khác biệt giữa chúng.

Để so sánh hai tệp tin và hiển thị sự khác biệt.

$ diff file1.txt file2.txt

Bạn có thể xem hướng dẫn sử dụng diff một cách dễ dàng.

# man diff
Linux diff Command to Compare Files
Lệnh diff Linux để so sánh tệp tin

Có một số bao bốc cho công cụ diff tăng cường tính năng của nó và chúng bao gồm:

colordiff Command

Colordiff là một tập lệnh Perl tạo ra cùng kết quả như diff, nhưng với màu sắc và tô sáng cú pháp. Nó có các bảng màu tùy chỉnh.

Bạn có thể cài đặt Colordiff trên Linux của bạn, sử dụng các công cụ quản lý gói mặc định gọi là yum, dnf và apt-get hoặc apt như được hiển thị.

$ 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]    

Để so sánh các thư mục theo cách đệ quy.

$ colordiff file1.txt file2.txt

Bạn có thể xem cách sử dụng colordiff trong hướng dẫn.

# man colordiff
Công cụ Colordiff - Xuất bản phân biệt màu sắc
Công cụ Colordiff - Xuất bản phân biệt màu sắc

wdiff Command

Tiện ích wdiff là một giao diện trước cho lệnh diff được sử dụng để so sánh các tệp tin dựa trên từng từ. Chương trình này rất hữu ích khi so sánh hai văn bản có từ khác biệt và đoạn văn đã được lấp đầy.

Để cài đặt wdiff trên Linux của bạn, chạy:

$ 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]    

Để hiển thị hai tệp tin cạnh nhau, làm nổi bật sự khác biệt ở mức độ từng từ.

$ wdiff file1.txt file2.txt

Sử dụng hướng dẫn wdiff để biết cách sử dụng nó trên Linux.

# man wdiff
wdiff So sánh hai tệp tin trong Linux
wdiff So sánh hai tệp tin trong Linux

2. Vimdiff Command

Vimdiff hoạt động một cách nâng cao so với tiện ích diff, cho phép người dùng chỉnh sửa đến bốn phiên bản của một tệp tin trong khi hiển thị sự khác biệt giữa chúng. Khi chạy nó, Vimdiff mở hai hoặc ba hoặc bốn tệp tin bằng trình chỉnh sửa văn bản Vim.

Để sử dụng vimdiff, bạn cần cài đặt Vim trên hệ thống của mình, nhưng nếu nó chưa được cài đặt, bạn có thể cài đặt nó bằng công cụ quản lý gói của mình.

$ 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]    

Để so sánh hai tệp tin bằng cách sử dụng vimdiff, bạn sẽ thực hiện lệnh sau.

$ vimdiff file1.txt file2.txt

Bạn cũng có thể sử dụng vimdiff để so sánh ba tệp tin.

$ vimdiff file1.txt file2.txt file3.txt

Để biết thông tin chi tiết hơn và tùy chọn sử dụng, bạn có thể truy cập trang hướng dẫn bằng cách chạy.

$ man vimdiff
Vimdiff Chỉnh sửa Nhiều Tệp tin cho Sự khác biệt
Vimdiff Chỉnh sửa nhiều tệp để tìm sự khác biệt

3. sdiff

Lệnh sdiff được sử dụng để so sánh hai tệp tin cạnh nhau, làm nổi bật sự khác biệt giữa chúng. Nó hiển thị nội dung của hai tệp tin trong hai cột riêng biệt, các dòng thêm vào được định dạng bằng ">", các dòng bị xóa được định dạng bằng ", và các dòng chung được hiển thị mà không có bất kỳ tiền tố nào.

Lệnh sdiff thường đi kèm với bản cài đặt chuẩn của hầu hết các bản phân phối Linux. Tuy nhiên, nếu nó chưa được cài đặt, bạn có thể cài đặt nó bằng công cụ quản lý gói của mình.

$ 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]    

Để so sánh hai tệp tin và hiển thị các sự khác biệt cạnh nhau.

$ sdiff file1.txt file2.txt

Sau khi xem xét các công cụ diff cổ điển, hãy nhanh chóng chuyển sang một số công cụ diff giao diện đồ họa có sẵn trên Linux.

4. Kompare

Kompare là một công cụ so sánh và hợp nhất đồ hoạ cho phép người dùng so sánh và xem sự khác biệt giữa các tệp tin và cũng gộp chúng.

Để cài đặt Kompare trên các bản phân phối Linux, bạn có thể sử dụng trình quản lý gói cụ thể cho hệ thống của bạn.

$ 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]    

Một số tính năng của nó bao gồm:

  • Hỗ trợ nhiều định dạng so sánh
  • Hỗ trợ so sánh thư mục
  • Hỗ trợ đọc các tệp tin so sánh
  • Giao diện tùy chỉnh
  • Tạo và áp dụng bản vá cho các tệp tin nguồn
Công cụ Kompare - So sánh hai tệp tin trong Linux
Công cụ Kompare - So sánh hai tệp tin trong Linux

5. DiffMerge

DiffMerge là ứng dụng đồ họa GUI chạy trên nhiều nền tảng để so sánh và hợp nhất tệp tin. Nó có hai chức năng chính, đó là động cơ Diff cho phép hiển thị sự khác biệt giữa hai tệp tin và hỗ trợ làm nổi bật và chỉnh sửa trong từng hàng, và động cơ Merge cho phép xuất ra các dòng thay đổi giữa ba tệp tin.

Nó có các tính năng sau:

  • Hỗ trợ so sánh thư mục
  • Tích hợp luồng duyệt tệp tin
  • Cấu hình cao
DiffMerge - So sánh tệp tin trong Linux
DiffMerge - So sánh tệp tin trong Linux

6. Meld – Diff Tool

Meld là một công cụ so sánh và hợp nhất GUI nhẹ, cho phép người dùng so sánh tệp tin, thư mục và các chương trình được quản lý phiên bản. Được xây dựng đặc biệt cho nhà phát triển, nó đi kèm với các tính năng sau:

  • So sánh hai chiều và ba chiều của các tệp tin và thư mục
  • Cập nhật so sánh tệp tin khi người dùng nhập thêm từ
  • Làm cho việc hợp nhất dễ dàng bằng việc sử dụng chế độ tự động hợp nhất và các hành động trên khối đã thay đổi
  • So sánh dễ dàng bằng việc sử dụng hình ảnh minh họa
  • Hỗ trợ Git, Mercurial, Subversion, Bazaar và nhiều hơn nữa

Để cài đặt Meld trên Linux, bạn có thể sử dụng trình quản lý gói của bạn để cài đặt từ kho lưu trữ chính thức.

$ 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]    
Meld - Công cụ Diff để So sánh Tệp tin trong Linux
Meld - Công cụ Diff để So sánh Tệp tin trong Linux

7. Diffuse – GUI Diff Tool

Diffuse là một công cụ so sánh và hợp nhất GUI phổ biến, miễn phí, nhỏ gọn và đơn giản mà bạn có thể sử dụng trên Linux. Được viết bằng Python, nó cung cấp hai chức năng chính, đó là so sánh tệp tin và kiểm soát phiên bản, cho phép chỉnh sửa các tệp tin và hợp nhất các tệp tin và xuất ra các sự khác biệt giữa các tệp tin.

Để cài đặt Diffuse trên Linux, bạn có thể sử dụng trình quản lý gói của bạn như được hiển thị.

$ 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]    

Bạn có thể xem tóm tắt so sánh, chọn dòng văn bản trong tệp tin sử dụng con trỏ chuột, tìm kiếm các dòng phù hợp trong các tệp tin sát ngay cạnh nhau và chỉnh sửa các tệp tin khác nhau.

Các tính năng khác bao gồm:

  • Tô sáng cú pháp
  • Phím tắt cho dễ dàng điều hướng
  • Hỗ trợ hoàn tác không giới hạn
  • Hỗ trợ Unicode
  • Hỗ trợ Git, CVS, Darcs, Mercurial, RCS, Subversion, SVK và Monotone
DiffUse - Một Công cụ để So sánh Tệp tin Văn bản trong Linux
DiffUse - Một Công cụ để So sánh Tệp tin Văn bản trong Linux

8. XXdiff – công cụ Diff và Merge

XXdiff là một công cụ so sánh và hợp nhất tệp tin và thư mục mạnh mẽ, miễn phí chạy trên các hệ điều hành dạng Unix như Linux, Solaris, HP/UX, IRIX và DEC Tru64. Một hạn chế của XXdiff là không hỗ trợ tệp tin Unicode và chỉnh sửa tệp tin diff.

Nó có danh sách các tính năng sau:

  • So sánh nông và đệ quy của hai tệp tin hoặc hai thư mục
  • Làm nổi bật sự khác biệt theo phương ngang
  • Công cụ ghép nối tương tác và lưu kết quả đầu ra đã thay đổi
  • Hỗ trợ xem xét/kiểm soát ghép nối
  • Hỗ trợ các công cụ diff bên ngoài như GNU diff, SIG diff, Cleareddiff và nhiều công cụ khác
  • Mở rộng bằng cách sử dụng kịch bản
  • Tùy chỉnh hoàn toàn bằng cách sử dụng các tệp tài nguyên và nhiều tính năng khác
Công cụ xxdiff
Công cụ xxdiff

9. KDiff3 – – Công cụ Diff và Merge

KDiff3 là một công cụ diff và hợp nhất tuyệt vời khác được làm từ KDevelop, hoạt động trên tất cả các nền tảng dạng Unix bao gồm Linux và macOS, Windows.

Để cài đặt KDiff3 trên Linux, bạn có thể sử dụng trình quản lý gói của bạn như được hiển thị.

$ 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]    

Nó có thể so sánh hoặc hợp nhất hai đến ba tệp tin hoặc thư mục và có các tính năng đáng chú ý sau:

  • Chỉ ra sự khác biệt hàng dòng và ký tự thành các dòng từng hàng dòng và ký tự
  • Hỗ trợ hợp nhất tự động
  • Trình chỉnh sửa được tích hợp để xử lý xung đột hợp nhất
  • Hỗ trợ Unicode, UTF-8 và nhiều codec khác
  • Cho phép in ra sự khác biệt
  • Hỗ trợ tích hợp vào Windows Explorer
  • Hỗ trợ tự động nhận diện thông qua byte-order-mark "BOM"
  • Hỗ trợ căn chỉnh bằng tay các hàng
  • Giao diện đồ họa dễ sử dụng và nhiều tính năng khác
Công cụ KDiff3 cho Linux
Công cụ KDiff3 cho Linux

10. TkDiff

TkDiff cũng là một wrapper GUI đa nền tảng, dễ sử dụng cho công cụ diff Unix, cung cấp một giao diện xem cùng một lúc cho sự khác biệt giữa hai tệp tin đầu vào. Nó có thể chạy trên Linux, Windows và macOS.

Bên cạnh đó, nó còn một số tính năng hấp dẫn khác bao gồm các đánh dấu diff, bản đồ đồ họa về sự khác biệt giữa các tệp tin để điều hướng dễ dàng và nhanh chóng cùng với nhiều tính năng khác.

Để cài đặt TkDiff trên Linux, bạn có thể sử dụng trình quản lý gói của bạn như được hiển thị.

$ 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]    

Sau khi đọc bài đánh giá này về một số công cụ so sánh tệp tin và thư mục tốt nhất, bạn có thể muốn thử một số công cụ này.

Đây có thể không phải là những công cụ so sánh duy nhất mà bạn có thể tìm thấy trên Linux, nhưng chúng được biết đến với một số tính năng tốt nhất, bạn cũng có thể cho chúng tôi biết về bất kỳ công cụ so sánh nào khác mà bạn đã thử nghiệm và cho rằng xứng đáng được đề cập giữa những công cụ tốt nhất.