• Linux 命令(142)—— hexdump 命令


    1.命令简介

    hexdump 以 ASCII、十进制、十六进制或八进制显示文件内容。

    2.命令格式

    hexdump [options] FILE [...]
    
    • 1

    3.选项说明

    -b
    	单字节八进制显示。
     -c
     	单字节字符显示。
     -C
     	规范化“十六进制+ASCII”显示。
     -d
     	两字节十进制显示。
     -e 
    	以指定的格式字符串显示数据。
     -f 
    	指定包含一个或多个换行分隔格式字符串的文件。内容使用 # 号开头表示注释。
    -n 
    	只解释输入的指定长度个字节。
     -o
    	两字节八进制显示。
     -s 
     	跳过开头指定长度个字节。
     -v
     	显示时不压缩相似的行。-v 选项使 hextump 显示所有输入数据。没有 -v 选项,任何数量的输出行组,如果与前一组相同,将被替换为由一个星号构成的行。
     -x
     	两字节十六进制显示。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    4.格式

    4.1 格式字符串

    格式字符串可以包含任意数量的格式单元,由空格分隔。格式单元最多包含三项:迭代计数、字节计数和格式。

    迭代计数是可选的正整数,缺省为1,表示每种格式应用的次数。

    字节计数是可选的正整数,表示每次按照指定格式迭代要解释的字节数。

    如果指定了迭代计数和/或字节计数,则必须使用单斜杠放在迭代计数之后和/或字节计数之前消除歧义。斜杠前后的任何空格都将被忽略。

    格式是必需的,必须用双引号括起来。它被解释为 fprintf 样式的格式字符串(参见 fprintf(3)),但以下情况除外:

    • 星号(*)不能用作字段宽度或精度。
    • 每个 s 转换字符都需要字节计数或字段精度(不同于 fprintf(3) 默认值,如果精度未指定,则打印整个字符串)。
    • 不支持转换字符 h、l、n、p 和 q。
    • 支持 C 标准中描述的单字符转义序列。
    字符转义
    NULL\0
    \a
    \b
    \f
    \n
    \r
    \t
    \v

    4.2 转换字符串

    hexdump 还支持以下额外的转换字符串用于格式字符串中。

    _a[dox]
    	标记下一个输出字节的偏移量,在输入文件中累积。d、o、x 分别以十进制、八进制和十六进制显示。
    _A[dox]
    	与 _a 转换字符串相同,只是在处理所有输入数据后只执行一次。
    _c
    	在默认字符集中输出字符。非打印字符以三个字符、零填充八进制显示,但可通过标准转义符号(见上文)表示的字符除外。
    _p
    	默认字符集中输出字符。非打印字符显示为单个点号 “.”。
    _u
    	输出美国 ASCII 字符,控制字符使用以下小写名称显示除外。大于 0xff 的字符显示为十六进制字符串。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    控制字符如下:

    码值名称全称
    0x00nulnull
    0x01sohstart of headline
    0x02stxstart of text
    0x03etxend of text
    0x04eotend of transmission
    0x05enqenquiry
    0x06ackacknowledge
    0x07belbell
    0x08bsbackspace
    0x09hthorizontal
    0x0Alfline feed
    0x0Bvtvertical tab
    0x0Cffform feed
    0x0Dcrcarriage return
    0x0Esoshift out
    0x0Fsishift in
    0x10dledata link escape
    0x11dc1device control 1
    0x12dc2device control 2
    0x13dc3device control 3
    0x14dc4device control 3
    0x15naknegative acknowledgement
    0x16synsynchronous idle
    0x17etbend of transmission block
    0x18cancancel
    0x19emend of medium
    0x1Asubsubstitute
    0x1bescescape
    0x1Cfsfile separator
    0x1Dgsgroup separator
    0x1Ersrecord separator
    0x1Fusunit separator
    0x7Fdeldelete

    5.常用示例

    假设有一个名为 txt 内容为 lvlv 的文本内容。

    (1)不指定选项缺省以十六进制显示指定文件的内容。

    hexdump txt
    0000000 766c 766c 000a                         
    0000005
    
    • 1
    • 2
    • 3

    其中第一列为偏移量。

    (2)单字节字符展示。

    hexdump -c txt
    0000000   l   v   l   v  \n                                            
    0000005
    
    • 1
    • 2
    • 3

    (3)输出十六进制和对应字符。

    hexdump -C txt
    00000000  6c 76 6c 76 0a                                    |lvlv.|
    00000005
    
    • 1
    • 2
    • 3

    (4)从指定偏移量开始输出。

    比如偏移两个字节,跳过第一个 lv。

    hexdump -s2 -C txt
    00000002  6c 76 0a                                          |lv.|
    00000005
    
    • 1
    • 2
    • 3

    (5)格式化输出并标记每个字节的偏移量。

    hexdump -e'/1 "%_ad %02X\n"' txt
    0 6C
    1 76
    2 6C
    3 76
    4 0A
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参考文献

    hexdump(1) - Linux manual page - man7.org

  • 相关阅读:
    IB心理学社会文化介绍
    Linux操作系统
    [附源码]计算机毕业设计springboot物业管理系统
    java -jar 指定端口或配置文件启动jar
    子网掩码计算方法
    【ACM学习】【STL】关联容器的分类
    【C++】vector的介绍 | 常见接口的使用
    【Unity ShaderGraph】| 快速制作一个 钛金化不锈钢效果
    会计学基础期末考试试题及答案
    【笔记:傅里叶分析】数学基础——傅里叶级数与傅里叶变换
  • 原文地址:https://blog.csdn.net/K346K346/article/details/125908028