Lệnh cmp trong linux với các ví dụ dễ hiểu

Lệnh cmp trong Linux là một công cụ dòng lệnh hữu ích để so sánh hai tệp tin, giúp bạn nhanh chóng xác định sự khác biệt giữa chúng. Lệnh cmp sẽ báo cáo vị trí byte đầu tiên mà hai tệp khác nhau, hoặc thông báo nếu chúng hoàn toàn giống nhau. Nó rất tiện lợi để kiểm tra tính toàn vẹn của dữ liệu hoặc tìm ra các thay đổi nhỏ trong các phiên bản tệp.

Lệnh cmp trong linux là gì?

Lệnh command cmp in linux là một công cụ dòng lệnh mạnh mẽ, được sử dụng để so sánh hai tệp tin bất kỳ, từ đó tìm ra sự khác biệt giữa chúng. Nó sẽ hiển thị byte và dòng đầu tiên mà hai tệp khác nhau, giúp bạn nhanh chóng xác định vị trí sai lệch. Nếu hai tệp giống hệt nhau, cmp sẽ không đưa ra bất kỳ thông báo nào, cho thấy sự đồng nhất hoàn toàn. Lệnh này đặc biệt hữu ích khi bạn muốn kiểm tra tính toàn vẹn của dữ liệu sau khi sao chép hoặc truyền tải. Ngoài ra, cmp còn có thể so sánh các phần của tệp, mang lại sự linh hoạt trong quá trình kiểm tra.

Tìm hiểu về lệnh cmp

Trong bước này, bạn sẽ làm quen với lệnh cmp trong Linux, dùng để so sánh nội dung hai file.

Lệnh cmp so sánh hai file theo từng byte và báo cáo vị trí khác biệt đầu tiên giữa chúng.

Để bắt đầu, hãy tạo hai file text với một ít nội dung như sau:

echo "This is file1.txt" > file1.txt
echo "This is file2.txt" > file2.txt

Bây giờ, hãy sử dụng lệnh cmp để so sánh hai file vừa tạo:

cmp file1.txt file2.txt

Ví dụ về kết quả trả về:

file1.txt file2.txt differ: byte 10, line 1

Kết quả cho thấy hai file khác nhau ở byte thứ 10, tương ứng với ký tự thứ 10 trong file.

Điều này xảy ra vì nội dung hai file khác nhau bắt đầu từ ký tự thứ 10.

Bạn cũng có thể dùng lệnh cmp để so sánh các file binary. Hãy tạo hai file binary và so sánh chúng:

dd if=/dev/urandom of=file1.bin bs=1024 count=1
dd if=/dev/urandom of=file2.bin bs=1024 count=1
cmp file1.bin file2.bin

Ví dụ về kết quả trả về:

file1.bin file2.bin differ: byte 1, line 1

Trong trường hợp này, lệnh cmp so sánh hai file binary theo từng byte và báo cáo vị trí khác biệt đầu tiên.

Lệnh cmp cũng cung cấp một số tùy chọn để tùy chỉnh việc so sánh, ví dụ như:

  • -l: Hiển thị số byte (decimal) và các byte khác nhau (octal) cho mỗi sự khác biệt.
  • -s: Chế độ im lặng, không xuất ra gì nếu các file giống hệt nhau.
  • -i: Bỏ qua sự khác biệt về chữ hoa chữ thường khi so sánh file text.

Bạn có thể khám phá thêm các tùy chọn này để phù hợp với nhu cầu cụ thể của mình.

So Sánh Hai Tập Tin Văn Bản

Trong bước này, bạn sẽ học cách dùng lệnh cmp để so sánh nội dung của hai tập tin văn bản.

Đầu tiên, hãy tạo hai tập tin văn bản có một vài điểm khác biệt nhỏ nhé.

echo "This is the content of file1.txt" > file1.txt
echo "This is the content of file2.txt" > file2.txt

Bây giờ, chúng ta hãy sử dụng lệnh cmp để so sánh hai tập tin vừa tạo xem sao.

cmp file1.txt file2.txt

Ví dụ về kết quả trả về:

file1.txt file2.txt differ: byte 25, line 1

Kết quả cho thấy hai tập tin khác nhau ở byte thứ 25, tương ứng với ký tự thứ 25 trong tập tin.

Điều này xảy ra vì hai tập tin có nội dung khác nhau bắt đầu từ ký tự thứ 25 đó.

Bạn cũng có thể dùng tùy chọn -l để hiển thị số byte và các byte khác nhau cho mỗi sự khác biệt.

cmp -l file1.txt file2.txt

Ví dụ về kết quả trả về:

25 164 163

Kết quả này chỉ ra rằng các tập tin khác nhau ở byte 25, với các byte là 164 và 163 (trong hệ bát phân).

Nếu các tập tin giống hệt nhau, lệnh cmp sẽ không xuất ra gì cả, vì -s (silent) là mặc định.

echo "This is the content of file3.txt" > file3.txt
cmp file1.txt file3.txt

Không có kết quả trả về có nghĩa là các tập tin hoàn toàn giống nhau.

So sánh các Tệp Nhị Phân

Trong bước này, bạn sẽ học cách dùng lệnh cmp để so sánh nội dung của hai tệp nhị phân.

Chúng ta hãy bắt đầu bằng việc tạo hai tệp nhị phân chứa dữ liệu ngẫu nhiên nhé:

dd if=/dev/urandom of=file1.bin bs=1024 count=1
dd if=/dev/urandom of=file2.bin bs=1024 count=1

Lệnh dd tạo ra hai tệp nhị phân, file1.binfile2.bin, mỗi tệp có 1024 byte dữ liệu ngẫu nhiên.

Bây giờ, hãy sử dụng lệnh cmp để so sánh hai tệp nhị phân này với nhau:

cmp file1.bin file2.bin

Ví dụ về kết quả:

file1.bin file2.bin differ: byte 1, line 1

Kết quả cho thấy hai tệp khác nhau ở byte thứ 1, nghĩa là byte đầu tiên của hai tệp không giống nhau.

Bạn cũng có thể dùng tùy chọn -l để hiển thị số byte và các byte khác nhau cho mỗi sự khác biệt:

cmp -l file1.bin file2.bin

Ví dụ về kết quả:

1 302 5

Kết quả này chỉ ra rằng các tệp khác nhau ở byte 1, nơi các byte là 302 và 5 (trong hệ bát phân).

Nếu các tệp giống hệt nhau, lệnh cmp sẽ không xuất ra gì cả, vì -s (silent) là mặc định khi các tệp giống nhau.

dd if=/dev/urandom of=file3.bin bs=1024 count=1
cmp file1.bin file3.bin

Không có kết quả nghĩa là các tệp giống hệt nhau.

Kết luận cho linux cmp command

Tóm lại, lệnh cmp là một công cụ nhỏ nhưng hữu ích để so sánh nhanh chóng hai tập tin trong Linux. Nó giúp bạn xác định xem hai tập tin có giống nhau hay không, và nếu không, nó sẽ chỉ ra vị trí khác biệt đầu tiên. Bạn có thể sử dụng nó để kiểm tra tính toàn vẹn của tập tin sau khi sao chép hoặc tải xuống. Hãy nhớ rằng, linux cmp command chỉ báo cáo sự khác biệt đầu tiên, không phải tất cả các khác biệt. Vì vậy, nếu bạn cần so sánh chi tiết hơn, hãy xem xét các công cụ khác như diff. Hy vọng hướng dẫn này đã giúp bạn hiểu rõ hơn về cách sử dụng lệnh cmp. Hãy thử nghiệm và khám phá thêm các tùy chọn khác để tận dụng tối đa sức mạnh của nó. Chúc bạn thành công trong việc quản lý tập tin của mình!

Last Updated : 14/10/2025