# od - 输出文件的八进制、十六进制等格式编码的字节
将指定文件的内容以八进制、十进制、十六进制等编码方式显示。
od命令 用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。
常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个文件中,如果想查看下这个数据,这时候od命令就派上用场了。在我看来,od命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。
# 适用范围
RedHat
RHEL
Ubuntu
CentOS
Debian
Deepin
SUSE
openSUSE
Fedora
Linux Mint
Alpine Linux
Arch Linux
# 语法
od [选项] file
od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
od --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]
# 选项
-A, --address-radix=RADIX # 设置偏移量的编码单位
-j, --skip-bytes=BYTES # 跳过指定书目的字符
-N, --read-bytes=BYTES # 输出指定字符数
-S, --strings[=BYTES] # 输出至少BYTES个图形字符的字符串
-t, --format=TYPE # 指定输出格式
-w, --width[=BYTES] # 设置每一行的最大字数
-v, --output-duplicates # 显示重复的数据
--traditional # 接受传统形式的参数
--help # 显示帮助文档
--version # 显示命令版本信息
# 举例
[sogrey@bogon newDir3]$ cat test2.txt
123
23
212
[sogrey@bogon newDir3]$ od test2.txt # 以八进制显示
0000000 031061 005063 031462 031012 031061 000012
0000013
[sogrey@bogon newDir3]$ od -t c test2.txt # 以字符方式显示
0000000 1 2 3 \n 2 3 \n 2 1 2 \n
0000013
[sogrey@bogon newDir3]$ od -b test2.txt # 使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节
0000000 061 062 063 012 062 063 012 062 061 062 012
0000013
[sogrey@bogon newDir3]$ od -c test2.txt # 使用ASCII码进行输出,注意其中包括转义字符
0000000 1 2 3 \n 2 3 \n 2 1 2 \n
0000013
[sogrey@bogon newDir3]$ od -t d1 test2.txt # 使用单字节十进制进行解释
0000000 49 50 51 10 50 51 10 50 49 50 10
0000013
[sogrey@bogon newDir3]$ od -A d -c test2.txt # 设置地址格式为十进制
0000000 1 2 3 \n 2 3 \n 2 1 2 \n
0000011
[sogrey@bogon newDir3]$ od -A x -c test2.txt # 设置地址格式为十六进制
000000 1 2 3 \n 2 3 \n 2 1 2 \n
00000b
[sogrey@bogon newDir3]$ od -j 2 -c test2.txt # 跳过开始的两个字节
0000002 3 \n 2 3 \n 2 1 2 \n
0000013
[sogrey@bogon newDir3]$ od -N 2 -j 2 -c test2.txt # 跳过开始的两个字节,并且仅输出两个字节
0000002 3 \n
0000004
[sogrey@bogon newDir3]$ od -w1 -c test2.txt # 每行仅输出1个字节
0000000 1
0000001 2
0000002 3
0000003 \n
0000004 2
0000005 3
0000006 \n
0000007 2
0000010 1
0000011 2
0000012 \n
0000013
[sogrey@bogon newDir3]$ od -w2 -c test2.txt # 每行仅输出2个字节
0000000 1 2
0000002 3 \n
0000004 2 3
0000006 \n 2
0000010 1 2
0000012 \n
0000013
[sogrey@bogon newDir3]$ od -w3 -c test2.txt # 每行仅输出3个字节
0000000 1 2 3
0000003 \n 2 3
0000006 \n 2 1
0000011 2 \n
0000013
[sogrey@bogon newDir3]$