「od(1)」-

功能简述

以八进制或者其他格式打印文件

常用命令

显示 hexdump(1) 格式的输出:

od -A x -t x1z -v "/path/to/file"

命令 od 的默认输出格式:

od -A o -t oS -w16 "/path/to/file"

语法格式

od [OPTION]... [FILE]...
od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
od --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]

命令描述

od会生成一个文件FILE的清楚表示,默认是八进制。如果没有指定FILE或者FILE为-,则从标准输入中读取文件。

每个输出行由输入文件中的偏移量组成,然后紧跟偏移量的是文件中的数据组。默认情况下,od以八进制打印偏移量,并且每组文件数据都是一个C语言的short int类型的输入值,并打印为单个八进制数字。

偏移量OFFSET指定了在格式化输出之前要跳过多少个输入字节。默认情况下,OFFSET被解释为一个八进制数字,但OFFSET后面可选的结尾小数点可以使它被解释为十进制数值。如果没有指定小数点,并且OFFSET以’0x’或’0X’开始,则它会被解释为十六进制数字。如果OFFSET存在尾随的’b’,跳过的字节数将被偏移量乘以512。

对于命令既可以是第一种形式又可以是第二种形式(比如od foo 10,你说10是文件还是个偏移量?)的情况:如果最后一个操作数以’+’开头或一个数字(如果有两个操作数),则假定是第二种形式,即最后一个操作数是便宜量。例如,在’od foo 10’和’od +10’中,’10’是偏移量,而在’od 10’中’10’是文件名。

命令选项

-A, –address-radix=RADIX
选择输出结果中文件偏移列的进制。参数RADIX可以是以下之一:

‘d’ 十进制;

‘o’ 八进制;

‘x’ 十六进制;

‘n’ 在输出结果中不打印进制;

默认为八进制。

–endian={big|little}
对输入字节进行重新排序,以不同的字节顺序处理输入数据,或者提供独立于当前系统的排序规则的一致输出。

交换是根据指定的类型–type的大小和–endian的顺序执行的,可以是“little”或“big”。

-j, –skip-bytes=BYTES
在格式化输出之前跳过从输入字节中跳过BYTES字节。如果字节BYTES以’0x’或’0X’开头,则视为十六进制数字;否则,如果它以’0’开始,则视为八进制数字; 否则,视为十进制数字。BYTES可能是字节,或者可能是一个整数,可选地后跟一个以下“乘法”后缀:

‘b’ => 512 (“blocks”)

‘KB’ => 1000 (KiloBytes)

‘K’ => 1024 (KibiBytes)

‘MB’ => 1000*1000 (MegaBytes)

‘M’ => 1024*1024 (MebiBytes)

‘GB’ => 1000*1000*1000 (GigaBytes)

‘G’ => 1024*1024*1024 (GibiBytes)

同理,‘T’, ‘P’, ‘E’, ‘Z’, ‘Y’也是如此。

-N, –read-bytes=BYTES
最多输出BYTES字节。

BYTES也可以有前缀和后缀,用法与-j选项的BYTES参数相同。

-S BYTES, –strings[=BYTES]
代替原有的正常输出,而是只输出字符串常量:至少BYTES字节连续的ASCII图形字符,后跟零字节(ASCII NUL)。BYTES也可以有前缀和后缀,用法与-j选项的BYTES参数相同。

如果使用–strings时省略了BYTES字节,则默认为3。

-t, –format=TYPE
指定输出文件数据的显示格式。TYPE是由一个或多个类型指示符字符组成的字符串。如果在TYPE中包含多个类型指示符字符,或者多次使用此选项,则od会按照你指定的顺序,将每个行都使用指示字符指定的格式输出一次。

在任何类型规范中添加尾随“z”会将可打印字符的单字节字符表示形式显示到由类型规范生成的输出行中。

在TYPE中可用的类型指示字符如下:

‘a’ 命名字符,忽略高位;
在类型a输出的内容中,如’sp’表示空格,’nl’表示换行符,’nul’表示零字节。只使用每个字节的最低有效位7位;高位被忽略。

‘c’ 可打印的单字节字符,C反斜线转义,或者三位八进制序列;
类型c中分别输出’ ‘ ‘\n’ ‘\0’。

‘d’ 有符号的十进制数;

‘f’ 浮点数(关于浮点数

‘o’ 八进制;

‘u’ 无符号的十进制数;

‘x’ 十六进制;

除类型’a’和’c’外,你可以以类型指示符后跟整数的形式(比如,d4、u5)来指定每个数字的字节数。或者,你也可以使用类型指示符字符后跟以下字符之一(比如:uI),以此来指定C编译器的内置数据类型的大小:

对于整数(‘d’, ‘o’, ‘u’, ‘x’):

‘C’ char

‘S’ short

‘I’ int

‘L’ long

对于浮点数(f):

F float

D double

L long double

-v, –output-duplicates
默认情况下,当两个或更多个连续输出行是相同的时,od只输出第一行,并在下一行放置一个星号(*)以表示省略。使用该选项后,会输出相同的连续行,而不使用星号。

-w[BYTES], –width[=BYTES]
每个输出行中只输出BYTES个输入字节。BYTES必须是与指定输出类型关联的大小的最小公倍数的倍数。

如果没有使用该选项,则默认值为16。如果省略BYTES,则默认值为32。

–traditional
识别出传统od能够接收的非选项“标签”。如下语法:

od –traditional [file] +]offset[.][b] [[+]label[.][b]

它最多可以指定一个文件,以及用于指定偏移量(offset参数)和伪开始地址(label参数)可选的参数。label参数会像偏移offset一样被解释,但是它指定了一个初始的伪地址。在正常地址后面的括号中显示了伪地址。

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

下面的几个选项是-t选项不同参数的简写

-a
等价于-t a,选择命名字符,忽略高位

-b
等价于-t o1,选择八进制字节

-c
等价于-t c,选择可打印字符或者反斜线转义。

-d
等价于-t u2,选择无符号十进制两字节单元。

-f
等价于-t fF,选择浮点数

-i
等价于-t dI,选择十进制INT类型

-l
等价于-t dL,选择十进制LONG类型

-o
等价于-t o2,选择八进制两字节单元

-s
等价于-t d2,选择十进制量字节单元

-x
等价于-t x2,选择十六进制两字节单元

附加说明

参考文献

man 1 od, version GNU coreutils 8.26
完整在线文档:http://www.gnu.org/software/coreutils/od
查看Info手册:info ‘(coreutils) od invocation’