Lệnh od trong Linux

Giới thiệu

Trong lab này, bạn sẽ tìm hiểu về lệnh od (octal dump) trong Linux, được sử dụng để hiển thị nội dung của một file ở định dạng octal, decimal, hexadecimal hoặc các định dạng khác. Bạn sẽ bắt đầu bằng cách hiểu cách sử dụng cơ bản của lệnh od, sau đó khám phá các tùy chọn khác nhau để tùy chỉnh định dạng đầu ra, và cuối cùng thực hiện một hexadecimal dump của các file. Lab này bao gồm các kỹ năng thiết yếu cho các thao tác cơ bản trên file và thư mục trong môi trường Linux.

Tìm hiểu Lệnh od

Trong bước này, bạn sẽ tìm hiểu về lệnh od (octal dump) trong Linux. Lệnh od được sử dụng để hiển thị nội dung của một file ở định dạng octal, decimal, hexadecimal hoặc các định dạng khác.

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

echo "Hello, Linux!" > sample.txt

Bây giờ, bạn có thể sử dụng lệnh od để xem nội dung của file ở định dạng hexadecimal:

od -x sample.txt

Ví dụ đầu ra:

0000000 4865 6c6c 6f2c 2020 4c69 6e75 7821 0a00
0000020

Tùy chọn -x cho od biết hiển thị nội dung file ở định dạng hexadecimal. Mỗi dòng hiển thị offset (tính bằng byte) từ đầu file, theo sau là biểu diễn hexadecimal của dữ liệu.

Bạn cũng có thể sử dụng tùy chọn -t để chỉ định định dạng đầu ra. Ví dụ: để hiển thị nội dung file ở định dạng decimal:

od -t d1 sample.txt

Ví dụ đầu ra:

0000000   72  101  108  108  111  44     32  108  105  110  117  120  33  10
0000020

Tham số d1 cho od biết hiển thị dữ liệu ở định dạng decimal 1 byte.

Khám phá Các tùy chọn Lệnh od

Trong bước này, bạn sẽ khám phá các tùy chọn khác nhau có sẵn với lệnh od để tùy chỉnh định dạng đầu ra.

Đầu tiên, hãy tạo một file mẫu khác với một số dữ liệu binary:

echo -e "\x01\x02\x03\x04\x05\x06\x07\x08" > binary.txt

Bây giờ, bạn có thể sử dụng lệnh od với các tùy chọn khác nhau để hiển thị nội dung file ở nhiều định dạng khác nhau:

## Hiển thị ở định dạng octal
od -t o1 binary.txt

## Hiển thị ở định dạng hexadecimal
od -t x1 binary.txt

## Hiển thị ở định dạng ASCII
od -t c binary.txt

Ví dụ đầu ra:

0000000 001 002 003 004 005 006 007 010
0000010
0000000 01 02 03 04 05 06 07 08
0000010
0000000 001 002 003 004 005 006 007 010
0000010

Tùy chọn -t cho phép bạn chỉ định định dạng đầu ra. Trong các ví dụ trên, o1 đại diện cho octal 1 byte, x1 đại diện cho hexadecimal 1 byte và c đại diện cho định dạng ký tự (ASCII).

Bạn cũng có thể kết hợp nhiều định dạng đầu ra bằng tùy chọn -t:

od -t x1 -t d1 -t c binary.txt

Ví dụ đầu ra:

0000000 01 02 03 04 05 06 07 08
0000010

Điều này sẽ hiển thị nội dung file ở định dạng hexadecimal, decimal và ký tự cạnh nhau.

Thực hiện Hexadecimal Dump của File

Trong bước cuối cùng này, bạn sẽ học cách sử dụng lệnh od để thực hiện một hexadecimal dump của các file.

Hãy tạo một file mẫu lớn hơn với một số dữ liệu ngẫu nhiên:

dd if=/dev/urandom of=random.txt bs=1024 count=10

Điều này sẽ tạo một file có tên random.txt với 10 kilobytes dữ liệu ngẫu nhiên.

Bây giờ, bạn có thể sử dụng lệnh od để hiển thị hexadecimal dump của file:

od -x random.txt

Ví dụ đầu ra:

0000000 f6d1 9d2e 4a4b 5b8f 6acd 0f1e 0f6a 1b2e
0000020 b6f9 2d4a 1e0f 6a1b 2e6f 9d2e 4a4b 5b8f
0000040 6acd 0f1e 0f6a 1b2e b6f9 2d4a 1e0f 6a1b
0000060 2e6f 9d2e 4a4b 5b8f 6acd 0f1e 0f6a 1b2e
0000100 b6f9 2d4a 1e0f 6a1b 2e6f 9d2e 4a4b 5b8f
0000120 6acd 0f1e 0f6a 1b2e b6f9 2d4a 1e0f 6a1b
0000140 2e6f 9d2e 4a4b 5b8f 6acd 0f1e 0f6a 1b2e
0000160 b6f9 2d4a 1e0f 6a1b 2e6f 9d2e 4a4b 5b8f
0000200 6acd 0f1e 0f6a 1b2e b6f9 2d4a 1e0f 6a1b
0000220 2e6f 9d2e 4a4b 5b8f 6acd 0f1e 0f6a 1b2e
0000240

Đầu ra hiển thị biểu diễn hexadecimal của nội dung file, với mỗi dòng hiển thị offset (tính bằng byte) từ đầu file.

Bạn cũng có thể sử dụng tùy chọn -c để hiển thị nội dung file ở định dạng ASCII cùng với hexadecimal dump:

od -tx1 -tc random.txt

Ví dụ đầu ra:

0000000 f6 d1 9d 2e 4a 4b 5b 8f 6a cd 0f 1e 0f 6a 1b 2e  |......JK[..j...j..|
0000020 b6 f9 2d 4a 1e 0f 6a 1b 2e 6f 9d 2e 4a 4b 5b 8f  |..-J..j..o..JK[.|
0000040 6a cd 0f 1e 0f 6a 1b 2e b6 f9 2d 4a 1e 0f 6a 1b  |j....j....-J..j.|
0000060 2e 6f 9d 2e 4a 4b 5b 8f 6a cd 0f 1e 0f 6a 1b 2e  |.o..JK[.j....j..|
0000100 b6 f9 2d 4a 1e 0f 6a 1b 2e 6f 9d 2e 4a 4b 5b 8f  |..-J..j..o..JK[.|
0000120 6a cd 0f 1e 0f 6a 1b 2e b6 f9 2d 4a 1e 0f 6a 1b  |j....j....-J..j.|
0000140 2e 6f 9d 2e 4a 4b 5b 8f 6a cd 0f 1e 0f 6a 1b 2e  |.o..JK[.j....j..|
0000160 b6 f9 2d 4a 1e 0f 6a 1b 2e 6f 9d 2e 4a 4b 5b 8f  |..-J..j..o..JK[.|
0000200 6a cd 0f 1e 0f 6a 1b 2e b6 f9 2d 4a 1e 0f 6a 1b  |j....j....-J..j.|
0000220 2e 6f 9d 2e 4a 4b 5b 8f 6a cd 0f 1e 0f 6a 1b 2e  |.o..JK[.j....j..|
0000240

Đầu ra này hiển thị các giá trị hexadecimal cùng với các ký tự ASCII tương ứng của chúng, giúp bạn dễ dàng diễn giải nội dung file hơn.

Tóm tắt

Trong lab này, bạn đã tìm hiểu về lệnh od (octal dump) trong Linux, được sử dụng để hiển thị nội dung của một file ở nhiều định dạng khác nhau, bao gồm octal, decimal và hexadecimal. Bạn đã tạo các file mẫu với dữ liệu văn bản và binary, và khám phá các tùy chọn khác nhau có sẵn với lệnh od để tùy chỉnh định dạng đầu ra. Bạn đã học cách sử dụng tùy chọn -t để chỉ định định dạng đầu ra mong muốn, chẳng hạn như octal 1 byte, hexadecimal 1 byte và định dạng ký tự (ASCII). Ngoài ra, bạn đã khám phá cách kết hợp nhiều tùy chọn để tùy chỉnh thêm đầu ra.

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