Cách so sánh hai tệp trong Linux

How Compare Two Files Linux



Nếu bạn muốn so sánh hai tệp và giải mã sự khác biệt, một lệnh được gọi là khác biệt Được sử dụng. Hướng dẫn này tập trung vào việc cung cấp cho bạn cách sử dụng khác biệt lệnh với các tùy chọn khác nhau để có được sự khác biệt giữa hai tệp.

Vì vậy, làm thế nào để khác biệt lệnh thực sự hoạt động? Các khác biệt lệnh so sánh hai tệp và xuất ra danh sách sự khác biệt giữa cả hai tệp. Chính xác hơn, nó mang lại một danh sách các sửa đổi cần được thực hiện trong tệp đầu tiên để khớp với tệp thứ hai. Các khác biệt Lệnh cũng được lập trình viên sử dụng để lấy sự khác biệt giữa hai tệp mã nguồn để phát triển các bản vá.







Trước khi đi sâu vào các ví dụ, hãy lưu ý rằng thứ tự của các tệp là rất quan trọng. Vì khác biệt lệnh cung cấp đầu ra dựa trên thứ tự của các tệp.



Cách sử dụng lệnh diff trong Linux để so sánh các tệp:

Cú pháp của khác biệt lệnh được đề cập bên dưới:



$khác biệt [tùy chọn] [file1] [file2]

Đầu tiên, tạo hai tệp. Tôi đang tạo các tệp văn bản có tên là test_file_1.txttest_file_2.txt . Các tệp này chứa nội dung có một chút khác biệt:





Bây giờ sử dụng lệnh sau để có được sự khác biệt:



$khác biệttest_file_1.txt test_file_2.txt

Đầu ra tiêu chuẩn hiển thị các dòng khớp theo thứ tự của các tệp được đề cập trong lệnh. Vì vậy, hãy giải mã đầu ra:

So sánh các tệp được gắn nhãn và mỗi nhãn có một số ở hai bên. Định dạng như sau:

[Số dòng của tệp 1] [Nhãn (a, c, d)] [Số dòng của tệp 2]

Có ba nhãn:

  • đến - Thêm: Thêm nội dung trong tệp đầu tiên để đồng bộ với tệp thứ hai.
  • NS - Thay đổi: Cho biết rằng cần sửa đổi nội dung của tệp đầu tiên để phù hợp với tệp thứ hai.
  • NS - Xóa: Xóa nội dung khỏi tệp đầu tiên để khớp với tệp thứ hai.

2d1 cho biết xóa dòng số 2 của tệp đầu tiên để khớp với tệp thứ hai từ dòng số 1.

Tương tự, 4c3 có nghĩa là thực hiện thay đổi ở dòng thứ tư của tệp đầu tiên để khớp với dòng số 3 của tệp thứ hai vì cả hai dòng hơi khác nhau.

Có một phương pháp khác để xem sự khác biệt, sử dụng khác biệt lệnh với -và Lựa chọn:

$khác biệt -và -TRONG 60test_file_1.txt test_file_2.txt

Trong đầu ra ở trên, nội dung của test_file_1.txt được hiển thị ở phía bên trái, trong khi nội dung của text_file_2.txt được hiển thị ở phía bên phải. Sự khác biệt được biểu thị bằng các ký hiệu:

  • | - Dòng khác trong tệp thứ hai
  • > - Dòng được bổ sung trong tệp thứ hai
  • <— Line has been deleted from the second file

-W cho biết chiều rộng giữa nội dung của hai tệp. Để nhận riêng và xem sự khác biệt, hãy sử dụng như sau:

$khác biệt -và -TRONG 60 --suppress-common-linestest_file_1.txt test_file_2.txt

Cách nhận đầu ra trong một dòng bằng lệnh diff:

Nếu phương pháp được gắn nhãn khó giải mã cho bạn, thì có một cách tiếp cận đơn giản hơn. Sử dụng -NS tùy chọn với khác biệt lệnh cung cấp cho bạn đầu ra trong một dòng. Tuy nhiên, không có bất kỳ thông tin bổ sung nào:

$khác biệt -NStest_file_1.txt test_file_2.txt

Nếu các tệp khác nhau, thì lệnh trên sẽ đưa ra kết quả đầu ra. Nếu các tệp giống hệt nhau, thì sẽ không có đầu ra. Để chứng minh điều đó, tôi đang tạo một bản sao của test_file_1.txt sử dụng:

$cptest_file_1.txt test_file_3.txt

Một tệp mới sẽ được tạo bởi tên của test_file_3.txt chứa cùng một nội dung test_file_1.txt có. Bây giờ, hãy sử dụng:

$khác biệt -NStest_file_1.txt test_file_2.txt

Vì cả hai tệp đều có nội dung tương tự nhau, do đó, sẽ không có đầu ra.

Cách kiểm tra sự khác biệt của các tệp trong chế độ ngữ cảnh bằng lệnh diff:

Để so sánh trong chế độ ngữ cảnh, -NS tùy chọn sẽ được sử dụng với khác biệt chỉ huy:

$khác biệt -NStest_file_1.txt test_file_2.txt

Chúng ta hãy phân tích kết quả đầu ra.

Để duy trì sự khác biệt, tệp đầu tiên được biểu thị bằng *** cùng với ngày và giờ tạo, trong khi tệp thứ hai được biểu thị bằng -.

Dòng tiếp theo biểu thị một loạt các dòng được xem xét trong quá trình so sánh. Đối với tệp đầu tiên, nó là *** 1,6 **** và đối với tệp thứ hai, nó là —1,5—- :

Sự khác biệt được biểu thị bằng các ký hiệu:

  • +: Dòng không có trong tệp đầu tiên. Chèn nó vào tệp đầu tiên hoặc xóa nó khỏi tệp thứ hai để khớp với cả hai tệp.
  • -: Dòng tồn tại trong tệp đầu tiên nhưng không tồn tại trong tệp thứ hai. Cố gắng chèn nó vào tệp thứ hai hoặc xóa nó khỏi tệp đầu tiên để khớp với cả hai tệp.
  • ! : Dòng cần sửa đổi để phù hợp.

Cách kiểm tra sự khác biệt của các tệp trong chế độ hợp nhất bằng cách sử dụng lệnh diff:

Chế độ hợp nhất khá giống với chế độ ngữ cảnh nhưng không có thông tin dư thừa. Lá cờ chúng tôi sử dụng là -u :

$khác biệt -utest_file_1.txt test_file_2.txt

Trong đầu ra, tệp đầu tiên được biểu thị bằng - và tệp thứ hai là +++. Dòng thứ hai hiển thị số dòng được xem xét để so sánh trong cả hai tệp, sau đó là nội dung được xóa, thêm hoặc sửa đổi với các ký hiệu đi kèm với chúng. Sẽ không có biểu tượng nào có các dòng giống nhau trong cả hai tệp.

Cách Bỏ qua Phân biệt Chữ hoa chữ thường khi Sử dụng Lệnh khác:

Nếu bạn muốn so sánh các tệp trong khi bỏ qua phân biệt chữ hoa chữ thường, thì hãy sử dụng -tôi lá cờ:

$khác biệt -tôitest_file_1.txt test_file_2.txt

Để chứng minh, tôi đã thực hiện NS của Sâu trong trong tệp đầu tiên nhỏ:

Như đã thấy trong lệnh đầu tiên, sự khác biệt được chỉ ra; Trong khi sử dụng -tôi sự khác biệt đó đã được loại bỏ.

Một số tùy chọn hữu ích khác của khác biệt lệnh được liệt kê bên dưới:

Lựa chọn Sự miêu tả
-đến Tùy chọn này coi tất cả các tệp là tệp văn bản
-NS Nó bỏ qua sửa đổi trong đó tất cả các dòng đều trống
-VÀ Tùy chọn này bỏ qua phần mở rộng tab
-TÔI Nó bỏ qua những thay đổi mà tất cả các dòng khớp với nhau
-NS Cung cấp đầu ra khi hai tệp giống hệt nhau
-trong Nó bỏ qua tất cả khoảng trắng
-VỚI Nó bỏ qua khoảng trắng ở cuối dòng

Cách sử dụng Vim Editor để so sánh hai tệp:

Một phương pháp khác để so sánh hai tệp là sử dụng vimdiff chỉ huy. Để làm được điều đó, bạn cần cài đặt vim:

$sudođúng cáchTải về tôi đã đến

Bây giờ, để so sánh hai tệp, hãy sử dụng:

$vimdiff test_file_1.txt test_file_2.txt

Cả hai tệp sẽ được mở cạnh nhau. Phần không khớp sẽ được đánh dấu:

Cách so sánh hai tệp bằng colordiff:

Một cách tiếp cận khác là một dạng mở rộng của khác biệt chỉ huy. Bạn có thể làm cho so sánh dễ nhận dạng hơn bằng cách thêm màu sắc cho nó. Để cài đặt sử dụng:

$sudođúng cáchTải vềcolordiff

Để so sánh các tệp, hãy sử dụng:

$colordiff test_file_1.txt test_file_2.txt

Bạn có thể thay thế khác biệt với colordiff để có được đầu ra tiêu chuẩn của khác biệt lệnh ở định dạng màu.

Phần kết luận:

Để so sánh các tệp trong Linux và thậm chí trong macOS, một tiện ích được sử dụng được gọi là khác biệt. Tiện ích khác biệt so sánh hai tệp và cung cấp thông tin về sự khác biệt giữa hai tệp. Các nhà phát triển chủ yếu sử dụng lệnh diff để tạo các tệp vá.

Trong hướng dẫn này, chúng tôi đã thảo luận kỹ lưỡng về khác biệt và cách sử dụng nó để so sánh hai tệp với các tùy chọn khác nhau. Chúng tôi cũng đã học cách sử dụng colordiff để làm cho sự khác biệt của tệp dễ nhận biết hơn. Nhưng nếu bạn thấy tiện ích dựa trên thiết bị đầu cuối khó sử dụng, thì cũng có một số công cụ dựa trên GUI, chẳng hạn như Kompare, DiffMerge, Meld - Diff Tool và Diffuse - GUI Giff Tool.