Lệnh cmp trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh cmp trong Linux để so sánh nội dung của hai file, cả text và binary. Lệnh cmp so sánh hai file theo từng byte và báo cáo vị trí đầu tiên mà các file khác nhau. Bạn sẽ tạo các file text và binary mẫu, sau đó sử dụng lệnh cmp để so sánh chúng và khám phá các tùy chọn khác nhau của nó để tùy chỉnh việc so sánh.

Lab này bao gồm các bước sau:

  1. Tìm hiểu về lệnh cmp và cách sử dụng cơ bản của nó.
  2. So sánh nội dung của hai file text bằng lệnh cmp.
  3. So sánh nội dung của hai file binary bằng lệnh cmp.

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

Trong bước này, bạn sẽ tìm hiểu về lệnh cmp trong Linux, được sử dụng để so sánh nội dung của hai file. Lệnh cmp so sánh hai file theo từng byte và báo cáo vị trí đầu tiên mà các file khác nhau.

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

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:

cmp file1.txt file2.txt

Ví dụ đầu ra:

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

Đầu ra cho thấy rằng hai file khác nhau ở byte 10, tương ứng với ký tự thứ 10 trong file. Điều này là do hai file có nội dung khác nhau bắt đầu từ ký tự thứ 10.

Bạn cũng có thể sử 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ụ đầu ra:

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í đầu tiên mà chúng khác nhau.

Lệnh cmp cũng cung cấp một số tùy chọn để tùy chỉnh việc so sánh, chẳng hạn 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 bất cứ điều gì nếu các file giống hệt nhau.
  • -i: Bỏ qua sự khác biệt về case khi so sánh các 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 file Text

Trong bước này, bạn sẽ học cách sử dụng lệnh cmp để so sánh nội dung của hai file text.

Đầu tiên, hãy tạo hai file text với một số khác biệt:

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

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

cmp file1.txt file2.txt

Ví dụ đầu ra:

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

Đầu ra cho thấy rằng hai file khác nhau ở byte 25, tương ứng với ký tự thứ 25 trong file. Điều này là do hai file có nội dung khác nhau bắt đầu từ ký tự thứ 25.

Bạn cũng có thể sử 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ụ đầu ra:

25 164 163

Đầu ra này chỉ ra rằng các file khác nhau ở byte 25, nơi các byte là 164 và 163 (ở hệ octal).

Nếu các file giống hệt nhau, lệnh cmp sẽ không xuất ra bất cứ điều gì, vì tùy chọn -s (silent) là hành vi mặc định khi các file giống nhau.

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

Không có đầu ra có nghĩa là các file giống hệt nhau.

So sánh file Binary

Trong bước này, bạn sẽ học cách sử dụng lệnh cmp để so sánh nội dung của hai file binary.

Hãy bắt đầu bằng cách tạo hai file binary với một số dữ liệu ngẫu nhiên:

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 hai file binary, file1.binfile2.bin, mỗi file 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 file binary:

cmp file1.bin file2.bin

Ví dụ đầu ra:

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

Đầu ra cho thấy rằng hai file khác nhau ở byte 1, có nghĩa là byte đầu tiên trong các file là khác nhau.

Bạn cũng có thể sử 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ụ đầu ra:

1 302 5

Đầu ra này chỉ ra rằng các file khác nhau ở byte 1, nơi các byte là 302 và 5 (ở hệ octal).

Nếu các file giống hệt nhau, lệnh cmp sẽ không xuất ra bất cứ điều gì, vì tùy chọn -s (silent) là hành vi mặc định khi các file giống nhau.

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

Không có đầu ra có nghĩa là các file giống hệt nhau.

Tổng kết

Trong lab này, bạn đã tìm hiểu về lệnh cmp trong Linux, được sử dụng để so sánh nội dung của hai file. Bạn bắt đầu bằng cách tìm hiểu cách sử dụng cơ bản của lệnh cmp, trong đó nó so sánh hai file theo từng byte và báo cáo vị trí đầu tiên mà các file khác nhau. Sau đó, bạn đã thực hành so sánh cả file text và file binary bằng lệnh cmp, và khám phá các tùy chọn khác nhau để tùy chỉnh việc so sánh, chẳng hạn như hiển thị số byte và các byte khác nhau, và bỏ qua sự khác biệt về case khi so sánh các file text.

400+ câu lệnh phổ biến trong Linux