od命令用于按指定格式输出文件内容。
基本语法
od [option]… [file]…
od [-abcdfilosx]… [file] [[+]offset[.][b]]
od [option]… --traditional [file] [[+]offset[.][b] [[+]label[.][b]]]
选项
-A radix,--address-radix=radix:以radix进制打印文件的偏移量,radix可选的值有:d(十进制)、o(八进制)、x(十六进制)、n(不打印偏移量),默认为八进制。
-j BYTES, --skip-bytes=BYTES:在格式化和写入之间跳过输入开头的BYTES字节。如果BYTES以“0x”或“0X”开头,则为十六进制,如果以“0”开头则为八进制,否则为十进制。BYTES可以是整数,也可以是整数后面跟着单位,或者只加有单位时表示对应的大小:b(512)、KB(1000)、K(1024)、MB(1000*1000)、M(1024*1024)、G、T、P、E、Z、Y等同理。除b外,其余必须为大写。
-N BYTES,--read-bytes=BYTES:最多输出BYTES字节的输入。BYTES值与-j选项相同。
-S TYPE,--strings[=BYTES]:
-t TYPE,--format=TYPE:要输出文件数据的格式。如一个TYPE中包含多个类型指示符,或者多次使用此选项,od会按定义的顺序使用指定的类型为每行输出创建副本。在任何类型指示符后面尾随“z”都会将可打印字符的单字节字符表示形式追加到由类型规范生成的输出行后面。type可选的值有:a(命名字符,忽略高位)、c(可打印的单字节字符,C反斜杠转义或3位八进制序列)、d(有符号十进制数)、f(浮点数)、o(八进制数)、u(无符号十进制数)、x(十六进制数)。除了a和c以外,可以在类型指示符后面跟随一个十进制数字来指定按类型解析数字时使用多少字节。或者通过跟随C编译器的内置数据类型来指定大小。对于整型d、o、u、x可跟随:C(char)、S(short)、I(int)、L(long),对于浮点型f可跟随:F(float)、D(double)、L(long double)。通过内置数据类型指定字节大小时需要注意数据类型在32位与64位系统上的区别。
-v,--output-duplicates:输出相同的连续行。默认情况下,当两个或多个连续输出行相同时,od只输出第一行,并在下一行中添加星号以指示省略。
-w[n],--width[=n]:每个输出行输出n个字节。必须是指定输出类型的大小的整数倍。如果没有提供此选项,则默认值为16。如果省略n,默认值是32。
--traditional:接受第三种传统od接受的非选项标签参数。可以指定最多一个文件file,指定偏移量的参数offset和伪地址label。label的解析与offset一样,只不过label指定的是起始的伪地址。伪地址显示在普通地址的后面,用括号包围起来。
--help:打印帮助信息。
--version:打印版本信息。
--endian=order:对输入字节进行重新排序,以处理具有不同字节顺序的输入,或提供与当前系统的字节序约定无关的一致输出。交换是根据指定的类型大小和字节序执行的。order可选值有little和big。此选项不是所有版本的od命令都支持使用时需注意。
当命令同时满足前两种格式,且操作数不超过两个时,如果od最后面是“+”开头的操作数或者有两到个操作数时最后一个是数字,则假定为第二种格式,即最后一个操作数解析为偏移量。当操作数超过2个时,都会解析为偏移量,偏移量默认为八进制的。如果是以0x或0X开头则按十六进制解析偏移量。如果偏移量后面跟随字符b,则会在前面数字的基础上乘以512为最终的偏移量。
od -a t.sh +20#两个操作数,最后一个+开头,20解析为偏移量
od -a t.sh 20#两个操作数,最后为数字,20解析为偏移量
od t.sh +20#两个操作数,最后一个+开头,20解析为偏移量
od t.sh 20#两个操作数,最后为数字,20解析为偏移量
od +20#只有一个操作数,且是+开头,20解析为偏移量
od 20#只有一个操作数,虽然最后为数字,但20解析为文件名
od a.sh t.sh 20#三个操作数,20解析为文件名
od a.sh t.sh +20#三个操作数,+20解析为文件名
以下选项是格式规范的缩写,od接受任何格式规范选项和缩写的组合,这些选项是累积的。
缩写 | 格式规范 | 说明 |
-a | -t a | 输出命名字符。 |
-b | -t o1 | 输出八进制字节。 |
-c | -t c | 输出可打印的单字节字符,C反斜杠转义或3位八进制序列。 |
-d | -t u2 | 输出无符号十进制数(双字节)。 |
-f | -t fF | 输出浮点型。 |
-i | -t dI(大写I) | 输出十进制整数。 |
-l | -t dL | 输出十进制长整型。 |
-o | -t o2 | 输出八进制字节(双字节)。 |
-s | -t d2 | 输出十进制数(双字节)。 |
-x | -t x2 | 输出十六进制数(双字节)。 |