0
点赞
收藏
分享

微信扫一扫

【Linux】一步一步学Linux——hexdump命令(267)


00. 目录


文章目录


​​00. 目录​​​​01. 命令概述​​​​02. 命令格式​​​​03. 常用选项​​​​04. 参考示例​​​​05. 附录​​


01. 命令概述

hexdump命令​一般用来查看文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。

02. 命令格式

hexdump [选项] 文件 ...

03. 常用选项

-b              单字节八进制显示
-c 单字节字符显示
-C 规范化 十六进制+ASCII 显示
-d 两字节十进制显示
-o 两字节八进制显示
-x 两字节十六进制显示
-e 格式 用于显示数据的格式字符串
-f 格式文件 包含格式字符串的文件
-n 长度 只解释输入的指定长度个字节
-s 偏移 跳过开头指定长度个字节
-v 显示时不压缩相似的行
-V 显示此帮助并退出

每个格式字符串由三部分组成,每个由空格分隔,第一个形如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​​选项。

04. 参考示例

4.1 以十六进制显示文件

[deng@localhost tmp]$ hexdump tmp
0000000 6568 6c6c 206f 6f77 6c72 0a64
000000c
[deng@localhost tmp]$

4.2 -C 输出十六进制和对应字符

[deng@localhost tmp]$ hexdump -C tmp
00000000 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a |hello world.|
0000000c
[deng@localhost tmp]$

4.3 显示时不压缩相似的行

[deng@localhost tmp]$ hexdump -v tmp
0000000 6568 6c6c 206f 6f77 6c72 0a64 6568 6c6c
0000010 206f 6f77 6c72 0a64 6568 6c6c 206f 6f77
0000020 6c72 0a64 6568 6c6c 206f 6f77 6c72 0a64
0000030
[deng@localhost tmp]$

4.4 显示时不压缩相似的行和字符

[deng@localhost tmp]$ hexdump -Cv tmp
00000000 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a 68 65 6c 6c |hello world.hell|
00000010 6f 20 77 6f 72 6c 64 0a 68 65 6c 6c 6f 20 77 6f |o world.hello wo|
00000020 72 6c 64 0a 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a |rld.hello world.|
00000030
[deng@localhost tmp]$

4.5 只输出给定字节

[deng@localhost tmp]$ hexdump -Cv tmp -n 4
00000000 68 65 6c 6c |hell|
00000004
[deng@localhost tmp]$ hexdump -Cv tmp -n 2
00000000 68 65 |he|
00000002
[deng@localhost tmp]$ hexdump -Cv tmp -n 1
00000000 68 |h|
00000001
[deng@localhost tmp]$

4.6 从指定偏移量开始输出

[deng@localhost tmp]$ hexdump -Cv tmp -s 1 -n 4
00000001 65 6c 6c 6f |ello|
00000005
[deng@localhost tmp]$ hexdump -Cv tmp -s 2 -n 4
00000002 6c 6c 6f 20 |llo |
00000006
[deng@localhost tmp]$ hexdump -Cv tmp -s 3 -n 4
00000003 6c 6f 20 77 |lo w|
00000007
[deng@localhost tmp]$

4.7 格式化输出

[deng@localhost tmp]$ hexdump -v -e '/1 "%02X"' tmp;echo
68656C6C6F20776F726C640A

[deng@localhost tmp]$ echo hello | hexdump -e '8/1 "%02X ""\t"" "' -e '8/1 "%c""\n"'
68 65 6C 6C 6F 0A hello

[deng@localhost tmp]$ echo hello | hexdump -v -e '"x" 1/1 "%02X" " "' ; echo
x68 x65 x6C x6C x6F x0A
[deng@localhost tmp]$ echo hello | hexdump -v -e '/1 "%02X\n"'
68
65
6C
6C
6F
0A
[deng@localhost tmp]$ echo hello | hexdump -v -e '/1 "%_ad# "' -e '/1 " _%_u\_\n"'
0# _h_
1# _e_
2# _l_
3# _l_
4# _o_
5# _lf_
[deng@localhost tmp]$

05. 附录

参考:​​【Linux】一步一步学Linux系列教程汇总​​



举报

相关推荐

0 条评论