Lệnh diff trong Linux là một công cụ không thể thiếu cho các lập trình viên và nhà quản trị hệ thống. Với diff, bạn có thể nhanh chóng tìm ra những thay đổi, lỗi sai và đảm bảo tính nhất quán của dữ liệu, thông qua một vài dòng lệnh đơn giản. Trong bài viết này, Vietnix sẽ giới thiệu đến bạn tổng quan về lệnh diff trong Linux, cũng như 11 ví dụ cụ thể để bạn hiểu rõ hơn về cách sử dụng lệnh này.
Lệnh diff trong Linux là gì?
Lệnh diff trong Linux là lệnh dùng để so sánh hai file văn bản và hiển thị các điểm khác nhau. Lệnh này giúp bạn dễ dàng phát hiện ra các lỗi sai trong quá trình chỉnh sửa hoặc sao chép file, đồng thời trong các hệ thống quản lý phiên bản như Git, lệnh diff còn được dùng để hiển thị sự khác biệt giữa các commit, giữa index so với commit cuối,…
Lệnh diff được xem là một lệnh hữu ích đến nhiều người chuyên sử dụng hệ thống hệ điều hành Linux, phổ biến như Ubuntu. Bạn có thể lưu ngay lại lệnh để sử dụng cùng các câu lệnh trong Linux cơ bản để nâng cao kỹ năng thực hiện lệnh:
Cú pháp cơ bản của lệnh diff
Cú pháp của lệnh diff trong Linux bao gồm một hoặc nhiều tùy chọn, sau đó là tên của các file mà bạn muốn kiểm tra. Cú pháp như sau:
diff [OPTION]... FILES
9 tùy chọn phổ biến nhất trong lệnh diff
Lệnh diff trong Linux cung cấp đa dạng các tùy chọn để sửa đổi cách phân biệt các file. Bạn sẽ tìm thấy những tùy chọn phù hợp nhất theo nhu cầu của mình bằng cách dùng lệnh man để xem trang hướng dẫn:
man diff
Tùy chọn | Mô tả |
---|---|
-B | Bỏ qua các dòng trống |
-c | Hiển thị ngữ cảnh đã sao chép |
-i | Bỏ qua sự khác biệt về chữ hoa và chữ thường |
-r | So sánh đệ quy các thư mục con |
-s | Báo cáo nếu các tập tin giống hệt nhau |
-q | Báo cáo nếu các tập tin khác nhau |
-u | Hiển thị ngữ cảnh thống nhất |
-w | Bỏ qua tất cả các khoảng trắng |
-y | Hiển thị kết quả trong hai cột |
5 ký hiệu chuyên dụng trong lệnh diff
Lệnh diff trong Linux sử dụng một số ký hiệu để biểu thị sự khác biệt giữa 2 file. Ngoài ra, chúng còn cung cấp thêm thông tin về bản chất của sự khác biệt đó, để người dùng có thể hiểu được cụ thể những dòng nào đã bị thêm vào, xóa bỏ hoặc thay đổi nội dung, từ đó dễ dàng theo dõi và sửa đổi hơn. Dưới đây là một số ký hiệu được sử dụng phổ biến trong lệnh diff, bạn có thể xem thêm thông tin trên trang hướng dẫn bằng cú pháp:
man diff
5 ký hiệu thường dùng trong lệnh diff như sau:
Ký hiệu | Mô tả |
---|---|
a/+ | Biểu thị việc bổ sung nội dung |
c/! | Biểu thị sự thay đổi nội dung |
d/- | Biểu thị việc xóa nội dung |
> | Các dòng từ file 1 |
< | Các dòng từ file 2 |
11 ví dụ chi tiết về cách sử dụng lệnh diff trong Linux
- So sánh sự khác nhau và cách làm file thứ nhất giống file thứ hai
- Hiển thị sự khác nhau giữa các file và cách chỉnh sửa
- Hiển thị sự khác nhau giữa các file và cách chỉnh sửa trong từng ngữ cảnh thống nhất
- Mang lại sự khác nhau của các file cạnh nhau bằng lệnh diff trong Linux
- Sử dụng lệnh diff trong Linux để so sánh 2 file văn bản
- Kiểm tra sự giống nhau của 2 file bằng lệnh diff
- So sánh file không phân biệt chữ hoa chữ thường
- Bỏ qua khoảng trắng khi phân biệt khoảng cách các file
- Bỏ qua các dòng trống khi phân biệt các file
- So sánh hai thư mục bằng lệnh diff trong Linux
- Chuyển hướng output của dòng lệnh
Ví dụ 1: So sánh sự khác nhau và cách làm file thứ nhất giống file thứ hai
Bạn có thể dùng lệnh diff trong Linux để hiển thị sự khác biệt giữa các file thông qua các ký hiệu. Trong ví dụ này, Vietnix sẽ phân biệt sự khác nhau giữa 2 file văn bản file1.txt và file2.txt, các bước cụ thể như sau:
Bước 1: Bạn hãy mở Ubuntu Terminal.
Bước 2: Để giúp bạn thấy rõ nội dung của 2 file này, tôi sử dụng lệnh cat ( có thể bỏ qua bước này để trực tiếp đến bước 3):
Bước 3: Nhập lệnh sau vào command prompt và nhấn Enter:
diff file1.txt file2.txt
Ví dụ 2: Hiển thị sự khác nhau giữa các file và cách chỉnh sửa
Bạn có thể hiển thị sự khác biệt giữa các file trong ngữ cảnh mặc định của từng file bằng tùy chọn -c
của lệnh diff. Kết quả sẽ hiển thị những điểm khác nhau giữa file thứ nhất và file thứ hai bằng các ký hiệu, từ đó giúp bạn dễ dàng sửa đổi theo mong muốn. Trong ví dụ này, Vietnix sẽ so sánh hai file văn bản file1.txt và file2.txt trong ngữ cảnh sao chép và giải thích các ký hiệu kết quả. Để thực hiện, bạn có thể làm theo các bước sau:
Bước 1: Bạn mở Ubuntu Terminal.
Bước 2: Nhập lệnh sau vào command prompt và nhấn Enter:
diff -c file1.txt file2.txt
Ví dụ 3: Hiển thị sự khác nhau giữa các file và cách chỉnh sửa trong từng ngữ cảnh thống nhất
Sử dụng lệnh diff trong Linux với tùy chọn -u
giúp bạn thấy được sự khác biệt giữa các file trong một ngữ cảnh thống nhất. Lệnh sẽ hiển thị cho bạn những điểm khác nhau thông qua các ký hiệu, đồng thời hướng dẫn cách để làm cho các file giống nhau. Bạn có thể thực hiện theo các bước sau:
Bước 1: Đầu tiên, bạn hãy mở Ubuntu Terminal.
Bước 2: Nhập lệnh sau vào command prompt và nhấn Enter.
diff -u file1.txt file2.txt
Tương tự như trên, bạn dùng lệnh cat để xem trước nội dung của 2 file:
Kết quả sau khi dùng lệnh diff như sau:
Ví dụ 4: Mang lại sự khác nhau giữa các file cạnh nhau bằng lệnh diff trong Linux
Sử dụng lệnh diff trong Linux với tùy chọn -y
, bạn có thể thấy được sự khác biệt giữa các file trong những cột cạnh nhau. Lệnh này sẽ gán các ký hiệu cho nội dung của file thứ hai để chỉ ra sự khác biệt. Các ký hiệu này cũng đại diện cho cách để làm cho các file trở nên giống nhau. Cách thực hiện thư sau:
Bước 1: Mở Ubuntu Terminal.
Bước 2: Bạn nhập lệnh sau vào command prompt và chọn Enter:
diff -y file1.txt file2.txt
Ví dụ 5: Sử dụng lệnh diff trong Linux để so sánh 2 file văn bản
Bạn có thể đối chiếu xem 2 file có khác nhau không bằng tùy chọn -q
trong lệnh diff. Giả sử, bạn muốn kiểm tra xem hai file văn bản file3.txt và file4.txt có khác nhau không, hãy thực hiện như sau: Mở Ubuntu Terminal > Nhập lệnh như bên dưới và nhấn Enter:
diff -q file3.txt file4.txt
Ví dụ 6: Kiểm tra sự giống nhau của 2 file bằng lệnh diff
Bạn có thể kiểm tra xem nội dung trong 2 file có hoàn toàn giống nhau không bằng tùy chọn -s
. Trong ví dụ này, Vietnix sẽ kiểm tra xem hai file văn bản file5.txt và file6.txt bằng lệnh như sau:
diff -s file5.txt file6.txt
Ví dụ 7: So sánh file không phân biệt chữ hoa chữ thường
Tùy chọn -i
trong lệnh diff có thể giúp bạn so sánh nội dung trong 2 file mà không phân biệt chữ hoa chữ thường. Ví dụ, bạn cần so sánh hai file văn bản file3.txt và file4.txt theo cách không phân biệt chữ hoa chữ thường, hãy thực hiện như sau: Mở Ubuntu Terminal > nhập lệnh bên dưới vào command prompt > nhấn Enter:
diff -i -y file3.txt file4.txt
Vietnix hiển thị kết quả cạnh nhau bằng tùy chọn -y
. Lệnh này bỏ qua các trường hợp và chỉ phân biệt hai dòng cuối không có trong tệp đầu tiên file3.txt.
Ví dụ 8: Bỏ qua khoảng trắng phân biệt khoảng cách các file
Tùy chọn -w
của lệnh diff trong Linux sẽ giúp bạn so sánh nội dung trong 2 file bỏ qua khoảng trắng. Để so sánh 2 file văn bản file7.txt và file8.txt bỏ qua khoảng trắng trên một dòng, bạn làm theo các bước như sau: Mở Ubuntu Terminal > nhập lệnh bên dưới vào command prompt > nhấn Enter:
diff -w -s file7.txt file8.txt
Cụ thể, Vietnix dùng lệnh cat để hiển thị nội dung của từng file, sau đó kiểm tra xem các file có giống nhau hoàn toàn không bằng cách bỏ qua khoảng trắng với tùy chọn -s
. Kết quả như sau:
Ví dụ 9: Bỏ qua các dòng trống khi phân biệt các file
Trong trường hợp này, tùy chọn -B
của lệnh diff sẽ giúp bạn phân biệt các file bằng cách bỏ qua các dòng trống. Giả sử, bạn muốn so sánh 2 file văn bản file9.txt và file10.txt, hãy thực hiện các bước sau: Mở Ubuntu Terminal > nhập lệnh bên dưới vào command prompt > nhấn Enter:
diff -B -s file9.txt file10.txt
Ví dụ 10: So sánh hai thư mục bằng lệnh diff trong Linux
Lệnh diff trong Linux giúp bạn thấy được sự khác biệt giữa nội dung trong hai thư mục bằng cách in ra các file và thư mục duy nhất trong mỗi thư mục. Giả sử, bạn cần phân biệt 2 thư mục văn bản Desktop và Documents, hãy thực hiện như sau: Mở Ubuntu Terminal > nhập lệnh bên dưới vào command prompt > nhấn Enter:
diff Desktop Documents
Ví dụ 11: Chuyển hướng output của lệnh diff
Bạn có thể ghi kết quả so sánh vào một file mong muốn bằng tính năng Redirection (>) của lệnh diff. Ví dụ, bạn cần chuyển hướng kết quả so sánh giữa hai file văn bản Desktop và Documents vào một file tên là diff.txt, bạn thực hiện như sau: Mở Ubuntu Terminal > nhập lệnh bên dưới vào command prompt > nhấn Enter:
diff Desktop Documents > diff.txt
Cụ thể, bạn hiển thị nội dung của các thư mục bằng lệnh ls, sau đó chuyển hướng output trong file diff.txt. Bạn có thể thấy kết quả được chuyển hướng đến tệp diff.txt bằng lệnh cat.
Câu hỏi thường gặp
Có thể sử dụng diff để so sánh hai tệp có mã hóa khác nhau không?
Có thể. Nhưng sẽ gặp một số vấn đề cản trở, do đó người dùng cần đảm bảo mã hóa và công cụ so sánh nâng cao.
Có cách nào để theo dõi sự thay đổi kích thước của một thư mục theo thời gian không?
Có thể. Bạn có thể theo dõi bằng một số cách như sử dụng script, công cụ giám sát, công cụ quản lý phiên bản, công cụ chuyên dụng
Lời kết
Bài viết trên đã mang đến thông tin tổng quan về lệnh diff trong Linux bao gồm cú pháp, tùy chọn, ký hiệu cũng như các ví dụ cụ thể về cách sử dụng của lệnh này. Nếu bạn có bất kỳ thắc mắc nào hãy để lại bình luận ngay bên dưới, Vietnix sẽ giải đáp nhanh nhất. Cảm ơn bạn đã theo dõi bài viết!