Linux命令学习总结: hexdump命令

本文详细介绍Linux下的hexdump命令,该命令用于将二进制文件转换为多种格式进行查看,包括ASCII、八进制、十进制及十六进制等。文章通过多个示例展示了如何使用不同的参数来实现特定的输出格式。

命令简介:

hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII、八进制、十进制、十六进制格式进行查看。

指令所在路径:/usr/bin/hexdump

 

命令语法:

hexdump: [-bcCdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]

 

命令参数:

此命令参数是Red Hat Enterprise Linux Server release 5.7下hexdump命令参数,不同版本Linux的hexdump命令参数有可能不同。

参数

长参数

描叙

-b

 

每个字节显示为8进制。一行共16个字节,一行开始以十六进制显示偏移值

-c

 

每个字节显示为ASCII字符

-C

 

每个字节显示为16进制和相应的ASCII字符

-d

 

两个字节显示为10进制

-e

 

格式化输出

-f

 

Specify a file that contains one or more newline separated format strings.  Empty lines and lines whose first non-blank character is a hash mark (#) are ignored.

-n

 

只格式前n个长度的字符

-o

 

两个字节显示为8进制

-s

 

从偏移量开始输出

-v

 

The -v option causes hexdump to display all input data.  Without the -v option, any number of groups of output lines, which would be identical to the immediately preceding group of output lines

-x

 

双字节十六进制显示

 

使用示例:

 

1: 查看hexdmp命令的帮助信息

[root@DB-Server ~]# man hexdump

 

2: 以8进制显示文件里面的字符。

[root@DB-Server ~]# cat >test.txt
ABCDEF    
GHIJKM
123456
[root@DB-Server ~]#  hexdump -b test.txt
0000000 101 102 103 104 105 106 012 107 110 111 112 113 115 012 061 062
0000010 063 064 065 066 012                                            
0000015

注意:一行共16个字节,一行开始以十六进制显示偏移值(如下所示,第一行字符串只显示到D,第十六个字节,后面的F12*DFDF换行显示)

[root@DB-Server ~]# cat >test.txt
ABCDEFGHIJKLMNODF12*DFDF
 
[2]+  Stopped                 cat > test.txt
You have new mail in /var/spool/mail/root
[root@DB-Server ~]# hexdump -b test.txt 
0000000 101 102 103 104 105 106 107 110 111 112 113 114 115 116 117 104
0000010 106 061 062 052 104 106 104 106 012                            
0000019
[root@DB-Server ~]# hexdump -c test.txt 
0000000   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   D
0000010   F   1   2   *   D   F   D   F  \n                            
0000019

clip_image001

 

3:以ASCII字符显示文件中字符

[root@DB-Server ~]# hexdump -c test.txt 
0000000   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   D
0000010   F   1   2   *   D   F   D   F  \n                            
0000019
 

hexdump 以ASCII字符显示时,可以输出换行符,这个功能可以用来检查文件是Linux的换行符格式还是Widows格式换行符。如下所示

clip_image002

 

4:以16进制和相应的ASCII字符显示文件里的字符

[root@DB-Server ~]# hexdump -C test.txt 
00000000  41 42 43 44 45 46 47 48  49 4a 4b 4c 4d 4e 4f 44  |ABCDEFGHIJKLMNOD|
00000010  46 31 32 2a 44 46 44 46  0a                       |F12*DFDF.|
00000019

 

5:只格式文件中前n个字符

[root@DB-Server ~]# hexdump -C -n 5 test.txt 
00000000  41 42 43 44 45                                    |ABCDE|
00000005

 

6:以偏移量开始格式输出。如下所示指定参数-s 5 ,前面的ABCDE字符没有了。

 
[root@DB-Server ~]# hexdump -C test.txt 
00000000  41 42 43 44 45 46 47 48  49 4a 4b 4c 4d 4e 4f 44  |ABCDEFGHIJKLMNOD|
00000010  46 31 32 2a 44 46 44 46  0a                       |F12*DFDF.|
00000019
[root@DB-Server ~]# hexdump -C -s 5 test.txt 
00000005  46 47 48 49 4a 4b 4c 4d  4e 4f 44 46 31 32 2a 44  |FGHIJKLMNODF12*D|
00000015  46 44 46 0a                                       |FDF.|
00000019
作者: 潇湘隐者

如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨小小打赏一下吧,如果囊中羞涩,不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.


原文链接http://www.cnblogs.com/kerrycode/p/3806618.html
<think> 首先,用户的问题是:“linux命令如何使用hexdump打开16进制文件”,意思是“如何在Linux中使用hexdump命令打开十六进制文件”。 我需要用中文回答这个问题。hexdump是一个Linux命令,用于显示文件的十六进制表示。 关键点: - hexdump的基本用法是:hexdump [选项] [文件] - 要查看文件的十六进制内容,可以直接运行 hexdump 文件名。 - 例如:hexdump -C 文件名 会以规范的格式显示十六进制和ASCII表示(-C选项是常用的)。 回答结构: 1. 解释hexdump的作用。 2. 给出基本命令格式。 3. 提供示例命令。 4. 解释输出格式。 现在,回答完后,我必须提出3-5个相关问题。这些问题必须基于用户的问题和我的回答。 问题必须以“§§相关问题§§”开头,然后列出1. 2. 3. 等,不能换行分散。 确保所有内容符合规则,否则回答无效。 计划回答: - 开头:hexdump是一个用于显示文件十六进制内容的命令。 - 基本用法:hexdump [选项] <文件名> - 常用选项:-C 以十六进制和ASCII格式显示。 - 示例:hexdump -C example.bin - 解释输出。 然后,提出相关问题: 1. hexdump的-C选项有什么作用? 2. 如何只显示十六进制值而不显示ASCII字符? 3. 如何指定偏移量或限制输出行数? 4. 还有其他类似工具如xxd或od吗?它们有什么区别? 确保问题是相关的,并提出3-5个。 最终输出格式: - 回答内容。 - 然后“§§相关问题§§”,紧接着是1. 2. 3. 列表。 现在,构建回答。 </think> ### 如何使用 hexdump 命令Linux 中查看十六进制文件Linux 中,`hexdump` 是一个命令行工具,用于以十六进制格式显示文件内容。它默认会以十六进制和 ASCII 字符的形式输出文件数据,便于分析二进制文件(如可执行文件、图片或自定义数据文件)。以下是基本使用方法: 1. **基本命令格式**: ``` hexdump [选项] <文件名> ``` - 如果不指定选项,`hexdump` 会以默认格式(16 字节每行)显示文件内容。 - 例如:`hexdump example.bin` 会输出文件的十六进制和 ASCII 视图。 2. **常用选项**: - `-C`(规范化格式):以更易读的方式显示十六进制值(左)和对应的 ASCII 字符(右)。这是最常用的选项。 ``` hexdump -C example.bin ``` 输出示例: ``` 00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| 00000010 02 00 3e 00 01 00 00 00 a0 10 40 00 00 00 00 00 |..>.......@.....| ... ``` - 左列是偏移地址(如 `00000000`),中间是十六进制字节,右列是 ASCII 表示(非可打印字符显示为 `.`)。 - `-n <长度>`:限制输出的字节数。例如,`hexdump -C -n 100 example.bin` 只显示文件的前 100 字节。 - `-s <偏移量>`:从指定偏移量开始显示。例如,`hexdump -C -s 0x20 example.bin` 跳过文件的前 32 字节(0x20 十六进制)。 - `-v`:显示所有数据(默认会压缩重复行)。 3. **示例操作**: - 创建一个测试文件并查看: ``` echo "Hello World" > test.txt hexdump -C test.txt ``` 输出: ``` 00000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 0a |Hello World.| 0000000c ``` 4. **注意事项**: - 文件必须存在且有读取权限(否则报错如 "No such file or directory")。 - 如果文件较大,建议结合 `less` 分页查看:`hexdump -C largefile.bin | less`。 - `hexdump` 适用于任何文件类型,但分析二进制文件时更常用。 如果文件是纯文本,`hexdump` 会显示其十六进制编码;对于二进制文件,它能帮助诊断结构问题(如文件头损坏)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值