Od:以八进制或其他格式编写文件

来自泡泡学习笔记
跳到导航 跳到搜索

od会对每个文件('-'表示标准输入)或标准输入(如果没有给定文件)进行一个明确的表示。概要:

od [option]… [file]…
od [-abcdfilosx]… [file] [[+]offset[.][b]]
od [option]… --traditional [file] [[+]offset[.][b] [[+]label[.][b]]]


输出的每一行包含了输入的偏移量,以及来自文件的数据组。默认情况下,od会以八进制打印偏移量,而每组文件数据则以一个C短整数的输入打印为单个八进制数。

退出状态为零表示成功,非零值表示失败。


如果给出了偏移量,它指定了在进行格式化和写入之前要跳过多少输入字节。默认情况下,它被解释为八进制数,但是可选的尾部小数点导致它被解释为十进制数。如果没有指定小数点,并且偏移量以'0x'或'0X'开头,则它将被解释为十六进制数。如果有一个尾部的'b',则跳过的字节数将是偏移量乘以512。


如果一个命令既属于第一种形式,又属于第二种形式,如果最后一个操作数以'+'开头或者(如果有两个操作数)为数字,则假定为第二种形式。例如,在'od foo 10'和'od +10'中,'10'是一个偏移量,而在'od 10'中,'10'是一个文件名。


该程序接受以下选项。另请参阅通用选项。

'-A radix'

'--address-radix=radix'

选择打印文件偏移量的基数。默认基数是八进制。radix可以是以下之一:


'd'

十进制;


'o'

八进制;


'x'

十六进制;


'n'

无(不打印偏移量)。


'--endian=order'

重新排列输入字节,以处理具有不同字节顺序的输入,或提供与当前系统的字节顺序约定无关的一致输出。交换是根据指定的--type大小和字节顺序进行的,可以是'little'或'big'。


'-j bytes'

'--skip-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'、'R'和'Q'等等。也可以使用二进制前缀:'KiB'='K','MiB'='M',依此类推。


'-N bytes'

'--read-bytes=bytes'

输出最多bytes字节的输入。bytes上的前缀和后缀的解释与-j选项相同。


'-S bytes'

'--strings[=bytes]'

输出只有字符串常量的正常输出:至少bytes个连续的ASCII图形字符,后面跟着一个零字节(ASCII NUL)。bytes上的前缀和后缀的解释与-j选项相同。


如果在--strings中省略bytes,则默认值为3。


'-t type'

'--format=type'

选择以哪种格式输出文件数据。type是一个包含以下类型指示字符的字符串。如果在单个类型字符串中包含多个类型指示字符,或者多次使用此选项,则od将使用您指定的每个数据类型的每个输出行的副本,按照您指定的顺序进行输出。


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


'a'

命名字符,忽略高位比特


'c'

可打印的单字节字符,C反斜杠转义或3位八进制序列


'd'

有符号十进制


'f'

浮点数(参见浮点数)


'o'

八进制

'u'

无符号十进制


'x'

十六进制


类型'a'会输出类似于空格的'sp',换行符的'nl',以及零字节的'nul'。每个字节仅使用最低有效的7位;高位比特将被忽略。类型'c'分别输出' ','\n'和\0。


除了类型'a'和'c'之外,您可以通过在类型指示字符后面跟随一个十进制整数来指定在给定数据类型中解释每个数字要使用的字节数。或者,您可以通过在类型指示字符后面跟随以下字符之一来指定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[n]'

'--width[=n]'

每个输出行输出n个输入字节。这必须是与指定输出类型相关的大小的最小公倍数的倍数。


如果根本没有给出此选项,则默认值为16。如果省略n,则默认值为32。


接下来的几个选项是格式规范的简写。GNU od可以接受任意组合的简写和格式规范选项。这些选项是累积的。


'-a'

以命名字符输出。相当于'-t a'。


'-b'

以八进制字节输出。相当于'-t o1'。


'-c'

以可打印的单字节字符、C反斜杠转义或三位八进制序列输出。相当于'-t c'。


'-d'

以无符号十进制双字节单元输出。相当于'-t u2'。


'-f'

以浮点数形式输出。相当于'-t fF'。


'-i'

以十进制整数形式输出。相当于'-t dI'。


'-l'

以十进制长整数形式输出。相当于'-t dL'。


'-o'

以八进制双字节单元输出。相当于'-t o2'。


'-s'

以十进制双字节单元输出。相当于'-t d2'。


'-x'

以十六进制双字节单元输出。相当于'-t x2'。


'--traditional'

识别传统od接受的非选项标签参数。可以使用以下语法:

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


用于指定最多一个文件和可选参数来指定偏移量和伪起始地址(标签)。标签参数的解释与偏移量相同,但它指定了一个初始的伪地址。伪地址在任何正常地址之后用括号显示。