目录
如果加了b,那么会跳过32个字节 - 这点与指令说明没对上,暂时没搞明白
内容来源:
GUN : Coreutils - GNU core utilities
busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客
【GUN】【od】指令介绍
od:写入八进制或其他格式的文件
od 写入每个文件的明确表示(` - `表示标准输入),如果没有给出标准输入,则表示标准输入。
简介:
od [option]... [file]...
od [-abcdfilosx]... [file] [[+]offset[.][b]]
od [option]... --traditional [file] [[+]offset[.][b] [[+]label[.][b]]]
每行输出由输入中的偏移量组成,后面是文件中的几组数据。默认情况下,od以八进制打印偏移量,每组文件数据都是一个C short int的输入值,打印为一个八进制数。
如果指定了offset,则指定在格式化和写入之前跳过多少个输入字节。
默认情况下,它被解释为一个八进制数,但可选的末尾小数点会导致它被解释为小数。如果没有指定小数并且偏移量以'0x'或'0x'开头,则将其解释为十六进制数。如果末尾有一个`b`,则跳过的字节数将乘以512。
如果命令同时具有第一种和第二种形式,如果最后一个操作数以'+'或(如果有两个操作数)一个数字开头,则假定第二种形式。例如,在`od foo 10`和`od +10`中,`10`是一个偏移量,而在`od 10`中,`10`是一个文件名。
该程序接受以下选项。参见第2章[常见选项],第2页。
‘-A radix’
‘--address-radix=radix’
选择显示文件偏移量的格式。可以是下列值之一。
'd' 10进制;
'o' 八进制;
'x' 十六进制;
'n' none(不打印偏移量)。
默认值为八进制。
‘--endian=order’
重新排序输入字节,以处理不同字节顺序的输入,或提供不依赖于当前系统端序约定的一致输出。
交换是根据指定的 - 类型大小和端序执行的,可以是'little'或'big'。
‘-j bytes’
‘--skip-bytes=bytes’
Skip bytes格式化和写入前的输入字节数。如果字节以'0x'或'0x'开头,则以十六进制解释;否则,如果它以`0`开头,则是八进制;
否则,用十进制表示。可以是Bytes,也可以是一个整数,后面可以有下列乘性后缀:
'b ' => 512 ("blocks")
'KB' => 1000 (KB)
'K ' => 1024 (KibiBytes)
'MB' => 1000*1000 (MB)
'M ' => 1024*1024 (mb)
'GB' => 1000*1000*1000 (GB)
'G ' => 1024*1024*1024 (GibiBytes)
等等' T ', ' P ', ' E ', ' Z ', ' Y ',‘R’,‘问’。也可以使用二进制前缀:`KiB` = `K`, `MiB` = `M`,等等。
‘-N bytes’
‘--read-bytes=bytes’
输出最多为输入字节数。字节的前缀和后缀被解释为-j选项。
‘-S bytes’
‘--strings[=bytes]’
与正常的输出不同,只输出字符串常量:至少是字节连续的可打印字符,后面是0字节(ASCII NUL)。字节的前缀和后缀被解释为-j选项。
如果使用--strings省略bytes,默认值为3。
‘-t type’
‘--format=type’
选择输出文件数据的格式。Type是由一个或多个以下类型指示符字符组成的字符串。如果在单个类型字符串中包含多个类型指示符字符,或者多次使用此选项,od将使用您指定的每种数据类型,按照您指定的顺序,为每个输出行编写一个副本。
在任何类型规范后面添加一个“z”,就会将可打印字符的单字节字符表示的显示附加到类型规范生成的输出行中。
'a' 命名字符,忽略高阶位
'c' 可打印的单字节字符,c反斜杠转义或3位八进制序列
'd' 有符号小数
'f' 浮点数(参见第2.12节[浮点数],第10页)
'o' 八进制
'u' 无符号小数
'x' 十六进制
类型a输出诸如空格`sp`、换行`nl`和0字节`nul`之类的东西。只使用每个字节的最低有效7位;忽略高阶位。类型c分别输出' '、' \n '和\0。
除了类型'a'和'c'之外,你可以通过在类型指示符后面加上一个十进制整数来指定在给定数据类型中解释每个数字时使用的字节数。另外,你也可以在类型指示字符后面加上下面的一个字符来指定C编译器内建数据类型的大小。对于整数('d','o','u','x'):
‘C’ char
‘S’ short
‘I’ int
‘L’ long
对于浮点(f):B brain 16位浮点(https://en.wikipedia.org/wiki/Bfloat16_floating-point_format)
H半精度浮点(https://en.wikipedia.org/wiki/Half-precision_floating-point_format)
对于浮点(f):B brain 16位浮点(https://en.wikipedia.org/wiki/Bfloat16_floating-point_format) H半精度浮点(https://en.wikipedia.org/wiki/Half-precision_floating-point_format)
F float
D double
L long double
‘-v’
‘--output-duplicates’
输出相同的连续行。默认情况下,当两行或多行连续输出相同时,od只输出第一行,并在下一行使用星号表示省略。
‘-w[n]’
‘--width[=n]’
Dump每输出行n个输入字节。该值必须是指定输出类型大小的最小公倍数的倍数。
如果根本没有提供此选项,则默认值为16。如果不指定n,则默认为32。
接下来的几个选项是格式规范的简写。GNU od接受简写和格式规范选项的任何组合。这些选项累积起来。
` -a `输出为命名字符。等价于` -t a `。
` -b `的输出为八进制字节。等价于` -t o1 `。
` -c `输出为可打印的单字节字符,C反斜杠转义或3位八进制序列。等价于` -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]]]
可用于指定最多一个文件和可选参数,指定偏移量和伪起始地址、标签。label参数的解释与offset类似,但它指定了一个初始伪地址。伪地址显示在普通地址后面的括号中。
退出状态为零表示成功,非零值表示失败。
【linux】【od】指令介绍
用法:od [选项]... [文件]...
或:od [-abcdfilosx]... [文件] [[+]偏移量[.][b]]
或:od --traditional [选项]... [文件] [[+]偏移量[.][b] [+][标签][.][b]]
将文件的明确表示形式(默认为八进制字节)写入标准输出。如果有多个文件参数,请按照列出的顺序将它们连接起来,形成输入。
如果没有指定文件,或者文件为"-",则从标准输入读取。
如果第一种和第二种调用格式都适用,如果最后一个操作数以+或数字(如果有两个操作数)开头,则假定采用第二种格式。
偏移操作数意味着-j偏移量。标签是打印的第一个字节的伪地址,随着转储的进行而递增。
对于OFFSET和LABEL, 0x或0x前缀表示十六进制;
后缀可能是。八进制和b乘以512。
必选参数对长短选项同时适用。
-A, --address-radix=RADIX 文件偏移量的输出格式;基数是[doxn]的一个,表示十进制、八进制、十六进制或None
--endian={big|little} 按照指定的顺序交换输入字节
-j, --skip-bytes=BYTES skip BYTES输入字节数
-N, --read-bytes=BYTES limit dump to BYTES 输入字节
-S BYTES, --strings[=BYTES] 输出至少字节的图形字符字符串;如果没有指定BYTES,则表示为3
-t, --format=TYPE 选择输出格式或格式
-v, --output-duplicates 不要使用*来标记行抑制
-w[BYTES], --width[=BYTES] 输出字节每行输出的字节数;如果没有指定字节,则表示32
--traditional 接受上述第三种形式的参数
--help 显示此帮助信息并退出
--version 显示版本信息并退出
Traditional format specifications may be intermixed; they accumulate:
-a same as -t a, select named characters, ignoring high-order bit
-b same as -t o1, select octal bytes
-c same as -t c, select printable characters or backslash escapes
-d same as -t u2, select unsigned decimal 2-byte units
-f 即 -t fF,指定浮点数对照输出格式
-i 即 -t dl,指定十进制整数对照输出格式
-l 即 -t dL,指定十进制长整数对照输出格式
-o 即 -t o2,指定双字节单位八进制数的对照输出格式
-s 即 -t d2,指定双字节单位十进制数的对照输出格式
-x 即 -t x2,指定双字节单位十六进制数的对照输出格式
类型由以下一个或多个规范组成:
a 命名字符,忽略高阶位
c 可打印字符或反斜杠转义
d[SIZE] 有符号小数,每整数的大小字节数
f[SIZE] 浮点数,每个浮点数的大小字节数
o[SIZE] 八进制,每个整数的大小字节数
u[SIZE] 无符号小数,每个整数的大小字节数
x[SIZE] 十六进制,每个整数的大小字节数
SIZE是一个数字。对于TYPE in [doux], SIZE也可以是C表示 sizeof(char), S表示 sizeof(short), I表示 sizeof(int), L表示 sizeof(long)。
如果TYPE是f, sizeof(float) 的SIZE也可以是f, sizeof(double) 的D, sizeof(long double) 的L。
为任何类型添加z后缀都会在每行输出的末尾显示可打印字符。
BYTES是十六进制的,前缀是0x或0x,后缀可以是乘数:
b 512
KB 1000
K 1024
MB 1000 * 1000
M 1024 * 1024
对于G T P E Z Y,以此类推。
GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 od 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/od>
或者在本地使用:info '(coreutils) od invocation'
使用示例:
1、输出文件 - 可选不同的格式
字节(char)输出
指令: od -t a test1.txt
指令: od -t c test1.txt
两个输出的区别是:
a选项把 空格 表示为 sp, c选项把 空格 表示为 "空格"
a选项把 换行 表示为 nl, c选项把 换行 表示为 \n
a选项把 0字节 表示为 nul, c选项把 0字节 表示为 \0
有符号小数输出
指令: od -t d test1.txt
浮点数输出
指令: od -t f test1.txt
无符号小数输出
指令: od -t u test1.txt
8进制输出
指令: od -t o test1.txt
16进制输出
指令: od -t x test1.txt
2、输出文件 - 控制显示的最小长度
a选项和c选项无法控制输出的字节间隔,
所以以16进制为例
以16进制为例 - 控制显示的最小长度是1字节
指令: od -t xC test11txt
以16进制为例 - 控制显示的最小长度是SHORT
指令: od -t xS test11txt
以16进制为例 - 控制显示的最小长度是INT
指令: od -t xI test11txt
以16进制为例 - 控制显示的最小长度是LONG
指令: od -t xL test11txt
3、输出文件 - 从文件的第n个字节开始输出
示例: 字节显示
指令: od -t c -j 8 test1.txt
从test1.txt文件的第8个字节开始输出
示例: 16进制的显示
指令: od -t xC -j 8 test1.txt
不同的显示长度下,也是按照字节偏移的
指令: od -t xI -j 8 test1.txt
4、输出文件 - 以指定字节序输出16进制
16进制是最容易找到规则的,其他的格式不容易一眼看出差异。
指令:od -t xS --endian=big test1.txt
指令:od -t xS --endian=little test1.txt
5、输出文件 - 每行最多显示n个字节
指令: od -w2 test1.txt
指令: od -w4 test1.txt
指令: od -w8 test1.txt
指令: od -w16 test1.txt
6、输出文件 - 尾参数用法
跳过 0x10 字节输出文件
指令: od test1.txt 0x10
指令: od --traditional test1.txt 0x10
如果加了b,那么会跳过32个字节 - 这点与指令说明没对上,暂时没搞明白
指令: od --traditional -t xC test1.txt +0x1b
7、输出文件 - 显示的地址偏移默认是8进制
参数 -A
设置地址偏移为 - 16进制
指令: od -t xC -A x -w1 test1.txt
设置地址偏移为 - 10进制
指令: od -t xC -A d -w1 test1.txt
不需要显示地址偏移
指令: od -t xC -A n -w1 test1.txt
如果输出时,某一行为*,表示此行内容与上一行一样
常用组合指令:
1、跳过文件的前n字节,向后输出m字节的内容
指令: od -t xC -N 8 -j 8 test1.txt