Linux hexdump 命令 - 查看二进制文件
介绍
hexdump 命令通常用于查看二进制文件,可以将二进制文件转换为 ASCII、八进制、十进制、十六进制格式进行查看。
注:hexdump 有一个缩写命令 hd,下面所有命令中都可以用 hd 替换 hexdump。
语法:
hexdump [OPTIONS...] [FILES...]
选项
-b:每个字节显示为八进制。一行共16个字节,一行开始以十六进制显示偏移值。-c:每个字节显示为 ASCII 字符。-C:每个字节显示为十六进制和相应的 ASCII 字符。标准十六进制 + ascii 码显示,十六进制显示偏移量,每行16个字符,每字符两位显示,不足补0,结尾显示当前16位数据的 ascii 码值,以|框住。-d:双字节十进制显示,十六进制显示偏移量,每行8组(16字节)每组5位,不足补零,列间以空格分隔,以无符号十进制数值显示。-e <format_string>:指定格式字符串,格式字符串包含在一对单引号中。-f <format_file>:根据 format_file 中的格式进行输出,忽略 format_file 中空行及以#开始的行会。-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:单个字符等
还有一些特殊的用法:
%_ad:标记下一个输出字节的序号,用十进制表示%_ax:标记下一个输出字节的序号,用十六进制表示%_ao:标记下一个输出字节的序号,用八进制表示%_p:对不能以常规字符显示的用.代替
同一行如果要显示多个格式字符串,则可以跟多个 -e 选项。