介绍
在本实验中,你将学习 Linux 中的 od(octal dump,八进制转储)命令,该命令用于以八进制、十进制、十六进制或其他格式显示文件内容。你将从了解 od 命令的基本用法开始,然后探索各种选项以自定义输出格式,最后对文件进行十六进制转储。本实验涵盖了在 Linux 环境中进行基本文件和目录操作所需的必备技能。
理解 od 命令
在这一步中,你将学习 Linux 中的 od(octal dump,八进制转储)命令。od 命令用于以八进制、十进制、十六进制或其他格式显示文件内容。
首先,让我们创建一个包含一些文本的示例文件:
echo "Hello, Linux!" > sample.txt
现在,你可以使用 od 命令以十六进制格式查看文件内容:
od -x sample.txt
示例输出:
0000000 4865 6c6c 6f2c 2020 4c69 6e75 7821 0a00
0000020
-x 选项告诉 od 以十六进制格式显示文件内容。每一行显示文件开头的偏移量(以字节为单位),后跟数据的十六进制表示。
你还可以使用 -t 选项指定输出格式。例如,以十进制格式显示文件内容:
od -t d1 sample.txt
示例输出:
0000000 72 101 108 108 111 44 32 108 105 110 117 120 33 10
0000020
d1 参数告诉 od 以 1 字节十进制格式显示数据。
探索 od 命令选项
在这一步中,你将探索 od 命令提供的各种选项,以自定义输出格式。
首先,让我们创建一个包含一些二进制数据的示例文件:
echo -e "\x01\x02\x03\x04\x05\x06\x07\x08" > binary.txt
现在,你可以使用 od 命令的不同选项以各种格式显示文件内容:
## 以八进制格式显示
od -t o1 binary.txt
## 以十六进制格式显示
od -t x1 binary.txt
## 以 ASCII 格式显示
od -t c binary.txt
示例输出:
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 选项允许你指定输出格式。在上面的示例中,o1 表示 1 字节八进制,x1 表示 1 字节十六进制,c 表示字符(ASCII)格式。
你还可以使用 -t 选项组合多种输出格式:
od -t x1 -t d1 -t c binary.txt
示例输出:
0000000 01 02 03 04 05 06 07 08
0000010
这将并排显示文件的十六进制、十进制和字符格式内容。
执行文件的十六进制转储
在这最后一步中,你将学习如何使用 od 命令对文件执行十六进制转储。
首先,让我们创建一个包含随机数据的较大示例文件:
dd if=/dev/urandom of=random.txt bs=1024 count=10
这将创建一个名为 random.txt 的文件,其中包含 10 千字节的随机数据。
现在,你可以使用 od 命令显示文件的十六进制转储:
od -x random.txt
示例输出:
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
输出显示了文件内容的十六进制表示,每一行显示文件开头的偏移量(以字节为单位)。
你还可以使用 -c 选项在十六进制转储旁边显示文件的 ASCII 格式内容:
od -tx1 -tc random.txt
示例输出:
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
此输出显示了十六进制值及其对应的 ASCII 字符,使文件内容更易于解释。
总结
在本实验中,你学习了 Linux 中的 od(octal dump,八进制转储)命令,该命令用于以多种格式(包括八进制、十进制和十六进制)显示文件内容。你创建了包含文本和二进制数据的示例文件,并探索了 od 命令提供的不同选项以自定义输出格式。你学习了如何使用 -t 选项指定所需的输出格式,例如 1 字节八进制、1 字节十六进制和字符(ASCII)格式。此外,你还了解了如何组合多个选项以进一步自定义输出。



