Giới thiệu
Trong lab này, bạn sẽ học cách sử dụng lệnh diff
của Linux để so sánh nội dung của hai tệp văn bản và hiểu sự khác biệt giữa chúng. Lab bao gồm mục đích và cú pháp cơ bản của lệnh diff
, cũng như khám phá các tùy chọn nâng cao của nó. Bạn sẽ thực hành sử dụng lệnh diff
để so sánh các tệp và diễn giải đầu ra, điều này có thể hữu ích cho các tác vụ như code review, đồng bộ hóa tệp và khắc phục sự cố. Lab cung cấp một cách tiếp cận thực tế và trực tiếp để làm chủ công cụ xử lý và chỉnh sửa văn bản thiết yếu này trong môi trường Linux.
Hiểu Mục đích và Cú pháp của Lệnh diff
Trong bước này, bạn sẽ tìm hiểu về mục đích và cú pháp cơ bản của lệnh diff
trong Linux. Lệnh diff
là một công cụ mạnh mẽ được sử dụng để so sánh nội dung của hai tệp và hiển thị sự khác biệt giữa chúng.
Đầu tiên, hãy tạo hai tệp văn bản mẫu để làm việc:
cd ~/project
echo "This is file1.txt" > file1.txt
echo "This is file2.txt" > file2.txt
Bây giờ, hãy sử dụng lệnh diff
để so sánh hai tệp:
diff file1.txt file2.txt
Ví dụ đầu ra:
1c1
< This is file1.txt
---
> This is file2.txt
Đầu ra cho thấy rằng dòng đầu tiên (1c1) của hai tệp là khác nhau. Ký hiệu <
cho biết dòng từ tệp đầu tiên và ký hiệu >
cho biết dòng từ tệp thứ hai.
Cú pháp cơ bản của lệnh diff
là:
diff [options] file1 file2
Ở đây, file1
và file2
là hai tệp bạn muốn so sánh.
Một số tùy chọn phổ biến cho lệnh diff
bao gồm:
-c
: Hiển thị sự khác biệt ở định dạng ngữ cảnh, hiển thị các dòng xung quanh các thay đổi.-u
: Hiển thị sự khác biệt ở định dạng hợp nhất, hiển thị các dòng xung quanh các thay đổi.-r
: So sánh đệ quy các thư mục và nội dung của chúng.-w
: Bỏ qua sự khác biệt về khoảng trắng.
Chúng ta sẽ khám phá các tùy chọn nâng cao hơn của lệnh diff
trong bước tiếp theo.
So sánh Hai Tệp Văn bản Sử dụng Lệnh diff
Trong bước này, bạn sẽ học cách sử dụng lệnh diff
để so sánh nội dung của hai tệp văn bản và hiểu đầu ra.
Đầu tiên, hãy tạo hai tệp văn bản mới với một số khác biệt:
cd ~/project
echo "This is line 1 in file1.txt" > file1.txt
echo "This is line 1 in file2.txt" > file2.txt
echo "This is line 2 in file1.txt" >> file1.txt
echo "This is line 2 in file2.txt" >> file2.txt
Bây giờ, hãy sử dụng lệnh diff
để so sánh hai tệp:
diff file1.txt file2.txt
Ví dụ đầu ra:
1c1
< This is line 1 in file1.txt
---
> This is line 1 in file2.txt
2c2
< This is line 2 in file1.txt
---
> This is line 2 in file2.txt
Đầu ra hiển thị sự khác biệt giữa hai tệp. Dòng 1c1
chỉ ra rằng dòng đầu tiên trong file1.txt
khác với dòng đầu tiên trong file2.txt
. Ký hiệu <
hiển thị dòng từ file1.txt
và ký hiệu >
hiển thị dòng từ file2.txt
.
Tương tự, dòng 2c2
chỉ ra rằng dòng thứ hai trong file1.txt
khác với dòng thứ hai trong file2.txt
.
Bạn cũng có thể sử dụng các tùy chọn -c
hoặc -u
để hiển thị sự khác biệt ở định dạng dễ đọc hơn:
diff -c file1.txt file2.txt
Ví dụ đầu ra:
*** file1.txt 2023-04-24 11:46:27.000000000 +0000
--- file2.txt 2023-04-24 11:46:32.000000000 +0000
***************
*** 1 ****
! This is line 1 in file1.txt
--- 1 ----
! This is line 1 in file2.txt
***************
** 2 ****
! This is line 2 in file1.txt
-- 2 ----
! This is line 2 in file2.txt
Tùy chọn -c
hiển thị sự khác biệt ở định dạng ngữ cảnh, hiển thị các dòng xung quanh các thay đổi.
Khám phá Các Tùy chọn Nâng cao của Lệnh diff
Trong bước này, bạn sẽ tìm hiểu về một số tùy chọn nâng cao của lệnh diff
để nâng cao chức năng của nó.
Hãy bắt đầu bằng cách tạo một thư mục mới và một số tệp để làm việc:
cd ~/project
mkdir dir1 dir2
echo "This is file1.txt in dir1" > dir1/file1.txt
echo "This is file2.txt in dir1" > dir1/file2.txt
echo "This is file1.txt in dir2" > dir2/file1.txt
echo "This is file2.txt in dir2" > dir2/file2.txt
Bây giờ, hãy sử dụng tùy chọn -r
(đệ quy) để so sánh nội dung của hai thư mục:
diff -r dir1 dir2
Ví dụ đầu ra:
Only in dir1: file1.txt
Only in dir1: file2.txt
Only in dir2: file1.txt
Only in dir2: file2.txt
diff dir1/file1.txt dir2/file1.txt
1c1
< This is file1.txt in dir1
---
> This is file1.txt in dir2
diff dir1/file2.txt dir2/file2.txt
1c1
< This is file2.txt in dir1
---
> This is file2.txt in dir2
Tùy chọn -r
cho phép diff
so sánh đệ quy nội dung của hai thư mục và các tệp của chúng.
Một tùy chọn hữu ích khác là -w
, tùy chọn này bỏ qua sự khác biệt về khoảng trắng:
echo " This is file3.txt in dir1 " > dir1/file3.txt
echo "This is file3.txt in dir2" > dir2/file3.txt
diff -w dir1/file3.txt dir2/file3.txt
Ví dụ đầu ra:
1c1
< This is file3.txt in dir1
---
> This is file3.txt in dir2
Tùy chọn -w
đảm bảo rằng sự khác biệt về khoảng trắng (ví dụ: khoảng trắng ở đầu/cuối dòng) bị bỏ qua.
Bạn cũng có thể sử dụng lệnh diff
để so sánh nội dung của hai thư mục và chỉ hiển thị các tệp khác nhau:
diff -q dir1 dir2
Ví dụ đầu ra:
Files dir1/file1.txt and dir2/file1.txt differ
Files dir1/file2.txt and dir2/file2.txt differ
Tùy chọn -q
chỉ hiển thị tên tệp khác nhau mà không hiển thị sự khác biệt thực tế.
Tóm tắt
Trong lab này, bạn đã học về mục đích và cú pháp cơ bản của lệnh diff
trong Linux, được sử dụng để so sánh nội dung của hai tệp và hiển thị sự khác biệt giữa chúng. Bạn đã tạo các tệp văn bản mẫu và sử dụng lệnh diff
để so sánh chúng, hiểu định dạng đầu ra và các tùy chọn phổ biến như -c
, -u
, -r
và -w
. Bạn cũng đã khám phá cách sử dụng lệnh diff
để so sánh nội dung của hai tệp văn bản có sự khác biệt và diễn giải đầu ra, cho biết các dòng khác nhau giữa các tệp.