od 命令用途是以指定格式显示档案。
常见的档案为文本档案和二进制档案。此命令主要用来查看保存在二进制档案中的值。比如,程式可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个档案中,如果想查看下这个数据,这时候od命令就派上用场了。
基本介绍
- 中文名OD
- 作用格式化输出档案中的数据
语法
使用字元串类型显示档案,来格式化输出。
od [ -v ] [ -A AddressBase ] [ -N Count ] [ -j Skip ] [ -t TypeString ... ] [ File ... ]
使用标誌显示档案,来格式化输出。
od [ -a ] [ -b ] [ -c ] [ -C ] [ -d ] [ -D ] [ -e ] [ -f ] [ -F ] [ -h ] [ -H ] [ -i ] [ -I ] [ -l ] [ -L ] [ -o ] [ -O ] [ -p ] [ -P ] [ -s ] [ -v ] [ -x ] [ -X ] [ [ -S [ N ] ] [ -w [ N ] ] [ File ] [ [ + ] Offset [ . | b | B ] [ + ] Label [ . | b | B ] ]
描述
常见的档案为文本档案和二进制档案。此命令主要用来查看保存在二进制档案中的值。比如,程式可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个档案中,如果想查看下这个数据,这时候od命令就派上用场了。在我看来,od命令主要用来格式化输出档案数据,即对档案中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出他们的值。
如果没有指定档案名称,或者档案名称为“-”,则从标準输入读入数据。
od 命令用指定格式显示由 File 参数指定的档案。如果 File 参数没有给定, od 命令读取标準输入。 使用多个 -bcCDdFfOoSstvXx 选项可以指定多个类型。
在第一个语法格式中,输出格式是由 -t 标誌指定。如果没有指定格式类型,-t o2 是预设值。
在第二个语法格式中,输出格式由标誌组合指定。Offset 参数指定了档案中档案输出的开始点。 预设情况下,Offset 参数解释为八进制位元组。如果附加了 . 点后缀, 参数解释为十进制的;如果参数前导以 x 或 0x 开始,处理为十六进制。如果 b 后缀添加到参数,解释为块是 512 位元组;如果 B 后缀添加到参数上,解释为块是 1024 位元组。
参数
Label 参数解释为首位元组显示的伪地址。 如果使用了该参数,它在 () 括弧中给出,遵循 Offset 参数。 相对于 Offset 参数,后缀有同样的意义。
当 od 命令读取标準输入时, Offset 参数和 Label 参数前头必须有个 + (加号)。
环境变数
环境变数的设定如 LANG 和 LC_ALL 影响着 od 命令的操作。 要获取更多信息,请参阅《AIX 5L V5.2 系统管理指南作业系统与设备》中的『理解环境变数的语言环境』 。
标誌
第一种格式的标誌
-A AddressBase 指定输入偏移底数。此 AddressBase 变数是下列的字元之一
d
偏移底数写为十进制的。
o
偏移底数写为八进制的。
x
偏移底数写为十六进制的。
n
偏移底数没有显示。
除非指定 -A n,输出行前将有需要写的下一位元组的输入偏移量,输入偏移量在输入档案间会形成。 ,跟随在一个位元组的位元组偏移量将在所有的输入数据处理完后显示。没有 -A 基地址选项和 [offset_string] 运算元,输入偏移量底数以八进制显示。
=
使用方法
-j Skip
在开始显示输出前,跳跃过由 Skip 变数给定的位元组数。 如果指定的档案超过一个,od 命令在显示输出前跳跃过分配的连线输入档案位元组数。 如果混合输入不是至少跳跃位元组的长度, od 命令将写出诊断讯息给标準错误,并退出非零状态。 Count 选项参数
预设情况下,Skip 变数的值解释为十进制数字。 带有前缀 0x 或 0X, 偏移量解释为十六进制数;带有前缀 0,偏移量解释为八进制数。 如果字元 b,k,或者 m 附加到 Skip 变数包含的数,偏移量在位元组上等于 Skip 变数各自乘以 512,1024,或者 10241024 的值。
-N Count 格式不超过由 Count 变数指定的输入位元组数。预设情况下,Count 变数解释为十进制数。带有前缀 0x 或者 0X,认为是十六进制数。 如果以 0 开始,认为是八进制数。 显示地址的底数不是由 Count 选项参数的底数提示的。
-t TypeString 指定输出类型。TypeString 变数是一个当写出数据时,指定使用类型的字元串。 多个类型能够连线在同一个 TypeString 变数中, 并且 -t 标誌能够多次指定。 对于每个指定的类型写出了输出行, 依照给定类型指定字元的顺序。TypeString 变数能够包括下列字元
a
显示位元组为指定的字元。在 0 到 01777 範围内,带有至少 7 位的位元组,对于那些字元,用相应的名称来写。
c
显示位元组为字元。 由 c 类型字元串变换的位元组数由 LC_CTYPE 本地类别确定。可列印的多个位元组字元的写法对应于字元的第一个位元组;两个字元序列 的写法对应于字元中每个保留的位元组,作为字元继续的指示。下列非图形字元作为 C- 语言转义序列使用
\ 反斜槓
\a 提示符
\b 退格符
\f 换页
\n 换行字元
\0 空
\r 回车符
\t 制表符
\v 垂直制表符
d
显示位元组为有符号十进制。预设情况下,od 命令变换相应的位元组数为 C -语言类型 int。d 类型字元串能够跟随无符号的十进制整数,它指定了由每个输出类型实例变换的位元组数。
可选的项 C,I,L,或者 S 字元能够附加到 d 可选项,表示转换应该分别适用于 char,int,long,或者 short。
f
显示位元组为浮点。预设情况下,od 命令变换相应的位元组数为 C - 语言类型 double。 f 类型字元串能够跟随无符号的十进制整数,它指定了由每个输出类型的实例变换的位元组数。
可选项 F,D,或者 L 字元能够附加到 f 可选项,表示转换应该分别适用于类型 float,double,或者 long double。
o
显示位元组为八进制。 预设情况下, od 命令变换相应的位元组数为 C - 语言类型 int。 o 类型字元串能够跟随无符号的十进制整数,它指定了由每个输出类型实例变换的位元组数。
可选项 C, I,L,或者 S 字元能够附加到 o 可选项,表示转换应该分别适用于类型 char,int,long,或者 short。
u
显示位元组为无符号的十进制。预设情况下,od 命令变换相应的位元组数为 C-语言类型 int。u 类型字元串能够跟随无符号的十进制整数,它指定了由每个输出类型的实例变换的位元组数。
可选的项 C,I,L,或者 S 字元能够附加到 u 可选项,表示转换应该分别适用于 char,int,long 或者 short。
x
显示位元组为无符号的十六进制。预设情况下,od 命令变换相应的位元组数为 C-语言类型 int。x 类型字元串能够跟随无符号的十进制整数,它指定了由每个输出类型实例变换的位元组数。
可选的项 C,I,L,或者 S 字元能够附加到 x 可选项,表示转换应该分别适用于 char,int,long 或者 short。
第二种格式的标誌
-a 显示位元组为字元,并且用它们的 ASCII 名称显示。如果 -p 标誌也给定了,带有偶校验的位元组加下划线。 -P 标誌引起带有奇校验的位元组加下划线。 否则忽略奇偶性校验。
-b 显示位元组为八进制值。
-c 显示位元组为 ASCII 符。下列非图形字元作为 C-语言转义序列使用
\ 反斜槓
\a 提示符
\b 退格符
\f 换页
\n 换行字元
\0 空
\r 回车符
\t 制表符
\v 垂直制表符
其它表示为 3 位的八进制数。
-C 显示扩展字元作为标準列印 ASCII 字元(使用合适的字元转义),并且以十六进制格式显示多位元组字元。
-d 显示 16 位字为无符号十进制值。
-D 显示长字为无符号十进制值。
-e 显示长字为双精度、浮点。(如同 -F 标誌)
-f 显示长字为浮点。
-F 显示长字为双精度、浮点。(如同 -e 标誌)
-h 显示 16 位字为无符号十六进制。
-H 显示长字为无符号十六进制值。
-i 显示 16 位字为有标记十进制。
-I (大写 i)显示长字为有标记十进制值。
-l (小写 L)显示长字为有标记十进制值。
-L 显示长字为有标记十进制值。
注意 标誌 -I(大写 i),-l(小写 L), 和 -L 是相同的。
-o 显示 16 位字为无符号八进制。
-O 显示长字为无符号八进制值。
-p 表示对 -a 转换进行偶校验。
-P 表示对 -a 转换进行奇校验。
-s 显示 16 位字为有标记十进制值。
-S[N] 搜寻以空位元组结束的字元的字元串。 N 变数指定了需标识的最小长度的字元串。如果 N 变数省略了,最小长度预设值为 3 个字元。
-v 标誌对于下列两种格式是一样的
-v 写所有输入数据。 预设情况下, 等同于先前输出行的输出行没有列印,用只包含 (星号)的行替换。 当指定 -v 标誌时,列印所有的行。
-w [N] 指定需解释并且在每个输出行显示的输入位元组的数量。 如果 -w 标誌没有指定,每一显示行读取 16 位元组。 如果指定了 -w 标誌没有带 N 变数,每个显示行读取 32 个位元组。 最大输入值是 4096 位元组。 大于 4096 位元组的输入值将重新分配最大值。
-x 显示 16 位字为十六进制值。
-X 显示长字为无符号十六进制值。(如同 -H 标誌)
退出状态
此命令返回下列出口值
0 所有输入档案被成功处理。
>0 出现错误。
示例
1. 以八进制显示档案,一次显示一页,请输入
od a.out | pg
此命令以八进制格式显示 a.out 档案并且通过 pg 命令管道输出。
2. 一次转换档案为数个格式,请输入
od -t cx a.out > a.xcd
此命令把 a.out 档案的内容,以十六进制格式(x)和字元格式(c)写到 a.xcd 档案中。
3. 在中间开始显示档案(使用第一语法格式),请输入
od -t acx -j 100 a.out
此命令把 a.out 档案以指定的字元(a)、字元(c)和十六进制(x)格式显示,从第 100 个位元组开始。
4. 在档案中间启动(使用第二种语法格式),请输入
od -bcx a.out +100.
把 a.out 档案以八进制位元组(-b)、位元组(-c)和十六进制(-x)格式显示,从第 100 个位元组开始。偏移量后的 . (点)表示它是十进制数。没有点,输出将从第 64(八进制为 100)个位元组开始。
档案
/usr/bin/od 包含od 命令。