hexdump用法

可用参数

[-bcCdovx] [-e format_string] [-f format_file] [-n length] [-s skip] file …

参数含义:
-b 单字节八进制显示,十六进制显示偏移量,每行显示16个字符,每字符用三位显示,不足补零,列间以空格分隔
-c 单字节字符显示,十六进制显示偏移量,每行显示16个字符,每字符三位显示,不足补空格,列间以空格分隔
-C 标准十六进制+ascii码显示,十六进制显示偏移量,每行16个字符,每字符两位显示,不足补0,结尾显示当前16位数据的ascii码值,以|框住
-d 双字节十进制显示,十六进制显示偏移量,每行8组(16字节)每组5位,不足补零,列间以空格分隔,以无符号10进制数值显示
-e format_string 以指定的格式显示
-f format_file 根据format file中的格式进行输出,忽略formatfile中空行及以#开始的行
-n length 只显示length个字节的数据
-o 双字节八进制显示。十六进制显示偏移量,每行8组数据,每数据占两字节,6列,不足补零,以空格分隔
-s offset 跳过从开始的offset个字节,默认输入十进制,以0x或0X开始按16进制处理,否则如以0开始按八进制处理,如果以b/k/m结尾,则原数值乘以512/1024/1048576
-v 显示所有数据,如果不包含这一选项,对于同上一行完全相同的数据,hexdump会以*代替显示
-x 两位十六进制显示.十六进制显示偏移量,每行8组数据,每数据占两字节,4列,不足补零,以空格分隔

-e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如: 'a/b “format1” “format2”'
每个格式字符串由三部分组成,每个由空格分隔,第一个形如a/b,b表示对每b个输入字节应用format1格式,a表示对每a个输入字节应用format2格式,一般a>b,且b只能为1,2,4,另外a可以省略,省略则a=1。
format1和format2中可以使用类似printf的格式字符串,如: %02d:两位十进制 %03x:三位十六进制 %02o:两位八进制 %c:单个字符等

例子:

echo hello | hexdump -e '8/1 "%04X "'  

输出:
0068 0065 006C 006C 006F 000A

echo hello | hexdump -e '8/1 "%02X ""\t"" "' -e '8/1 "%c""\n"'  

输出:
68 65 6C 6C 6F 0A hello

加上"x"前缀:

echo hello | hexdump -v -e '"x" 1/1 "%02X" " "'  

输出:
x68 x65 x6C x6C x6F x0A

还有一些特殊的用法:
%ad:标记下一个输出字节的序号,用十进制表示
%
ax:标记下一个输出字节的序号,用十六进制表示
%ao:标记下一个输出字节的序号,用八进制表示
%
p:对不能以常规字符显示的用.代替 同一行如果要显示多个格式字符串,则可以跟多个-e选项

参考文章

你可能感兴趣的:(linux,hexdump)