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

00. 目录

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系列教程汇总

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值