1、命令简介
od:转储八进制和其他格式的文件。用于查看文件的八进制或其他进制表示的工具。它允许用户以不同的进制(如八进制、十进制、十六进制)查看文件的内容,以便更好地理解文件的内部结构。
2、命令语法
od [OPTION]... [FILE]... od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]] od --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]
3、命令描述
将文件的明确表示形式(默认为八进制字节)写入标准输出。如果有多个文件参数,请按照列出的顺序将它们连接起来,形成输入。如果没有文件,或者FILE
为-
,读取标准输入。
对于短选项,长选项的所有参数都是必须的。od
命令通常用于调试和分析文件,特别是在处理二进制文件时很有用。
4、命令选项
选项 | 描述 |
-A, --address-radix=RADIX | 决定如何打印文件偏移量 |
-j, --skip-bytes=BYTES | 首先跳过 BYTES 个输入字节 |
-N, --read-bytes=BYTES | 限制转储到 BYTES 个输入字节 |
-S, --strings[=BYTES] | 输出至少包含 BYTES 个图形字符的字符串 |
-t, --format=TYPE | 选择输出格式或多个格式 |
-v, --output-duplicates | 不使用 * 标记行抑制 |
-w, --width[=BYTES] | 每个输出行输出 BYTES 个字节 |
--traditional | 以传统形式接受参数 |
--help | 显示此帮助信息并退出 |
--version | 输出版本信息并退出 |
传统格式命令可混合使用,不同的格式可叠加:
选项 | 描述 |
-a | 即 -t a,使用命名的字符,忽略高阶位 |
-b | 即 -t o1,使用八进制单字节字符 |
-c | 即 -t c,使用ASCII字符,或者反斜杠正名的特殊字符 |
-d | 即 -t u2,使用无符号十进制双字节字符 |
-f | 即 -t fF,指定浮点数对照输出格式 |
-i | 即 -t dl,指定十进制整数对照输出格式 |
-l | 即 -t dL,指定十进制长整数对照输出格式 |
-o | 即 -t o2,指定双字节单位八进制数的对照输出格式 |
-s | 即 -t d2,指定双字节单位十进制数的对照输出格式 |
-x | 即 -t x2,指定双字节单位十六进制数的对照输出格式 |
如果两个调用格式都适用,系统会在最后一个运算量以"+"或数字开始
(如果有两个运算量)的情况下采用第二种格式。
偏移量是指 -j
偏移量。标签是第一个字节的伪地址,
随着累积过程递增。偏移量和标签如果冠以"0x"或"0X"前缀则
表示十六进制数;后缀"."代表八进制数,后缀"b"表示乘以 512。
TYPE 是由下面一种或几种参数组成的:
输出格式 | 描述 |
a | 重定义字符,忽略高位字节 |
c | ASCII码字符或反斜线字串 (如 |
d[SIZE] | 有符号十进制数,每个整数占指定尺寸的字节 |
f[SIZE] | 浮点数,每个浮点数占指定尺寸的字节 |
o[SIZE] | 八进制数,每个整数占指定尺寸的字节 |
u[SIZE] | 无符号十进制数,每个整数占指定尺寸的字节 |
x[SIZE] | 十六进制数,每个整数占指定尺寸的字节 |
尺寸应该是一个数字。对 doux 等类型来说,适用的尺寸有:
C 代表 sizeof(char)、S 代表 sizeof(short)、I 代表
sizeof(int),或 L 代表 sizeof(long);
如果类型是 f,可适用的尺寸有:
F 代表 sizeof(float)、D 代表sizeof(double),或 L 代表
sizeof(long double)。
当 RADIX 为"d"时代表十进制,为"o"时代表八进制,为"x"时代表十六进制,
"n"则代表无。
BYTES 是以0x 或0X 为前缀的十六进制数,可能有以下几种后缀:
b 512,kB 1000,K 1024,MB 1000*1000,M 1024*1024,
GB 1000*1000*1000,G 1024*1024*1024,对于T,P,E,Z,Y 同样适用。
为任何类型添加"z"后缀都将在每个输出行的行尾显示可显示字符
不带数字的--string
选项代表3;不带数字的--width
选项代表32
。
默认情况下od
使用 -A o -t oS -w16
参数。
5、使用示例
1)使用 od 命令
$ od -b urls.txt 0000000 150 164 164 160 163 072 057 057 167 167 167 056 143 152 141 166 0000020 141 160 171 056 143 157 155 057 141 162 164 151 143 154 145 057 0000040 062 066 071 062 057 012 0000046
2)使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节
od -c urls.txt 0000000 h t t p s : / / w w w . c j a v 0000020 a p y . c o m / a r t i c l e / 0000040 2 6 9 2 / \n 0000046
3)使用ASCII码进行输出,注意其中包括转义字符
$ od -t d1 urls.txt 0000000 104 116 116 112 115 58 47 47 119 119 119 46 99 106 97 118 0000020 97 112 121 46 99 111 109 47 97 114 116 105 99 108 101 47 0000040 50 54 57 50 47 10 0000046
4)使用单字节十进制进行解释
$ d -A d -c urls.txt 0000000 h t t p s : / / w w w . c j a v 0000016 a p y . c o m / a r t i c l e / 0000032 2 6 9 2 / \n 0000038