Xxd Linux

2024 年 8 月 29 日 | 4 分钟阅读

xxd 简介

Xxd 可以生成标准输入或给定文件的十六进制转储。它还可以将十六进制转储转换回其真实的二进制形式。它允许以“邮件安全”的 ASCII 表示形式传输二进制数据。然而,它具有像 uudecode(1) 和 uuencode(1) 那样的解码为标准输出的优点。它可以用于实现二进制文件补丁。

xxd 命令显示一个文件作为其 ASCII 表示和十六进制值,并允许在类 Unix 操作系统上进行编辑。Xxd 由 **Juergen Weigert** 于 1990 年集成。

xxd 程序会读取标准输入或文件,并生成一个仅使用 EBCDIC 和 ASCII 字符的十六进制转储。最终的十六进制转储可以轻松通过电子邮件发送并在目的地建立。它还可以获取格式化的十六进制转储并将其转换为二进制形式,从而允许将二进制文件作为文本进行修补和编辑。

语法

以下是基本的 xxd 命令语法。

注意:如果参数与长选项名(如 -autoskip)一起添加,则可以使用相关的短选项(如 -a)来描述类似的参数。

  • 显示命令版本和帮助
  • 生成十六进制转储
  • 将十六进制转储转换为二进制

Xxd 选项

如果未指定显示开关,则 xxd 命令的行为就像指定了 -c16(每行 16 个字节)一样。

选项描述
-autoskip, a切换自动跳过:一个 '*' 代替空行。
-bits, b而不是十六进制转储,切换到二进制数字。此选项可以将字节写为八个数字“0”和“1”,而不是常见的十六进制转储。所有行后跟 EBCDIC 或 ASCII 表示,前面是十六进制行号。-i、-p 和 -r 命令行选项在此模式下无效。
-cols cols, c cols格式化每行字节数。默认值为 16。最大值为 256。对于 -ps,没有最大值。对于 -ps,0 会产生一个单独的输出行。
-capitalize, C当使用 -i 时,将 C 头文件样式中的变量名大写。
-EBCDIC, E将右侧列中的字符编码从 ASCII 更改为 EBCDIC。它不会更改十六进制表示。
-e在小端字节序中,它将字节组视为字。它仅在十六进制转储上使用,而使 EBCDIC 或 ASCII 表示保持不变。
-groupsize bytes, g bytes使用空格分隔所有字节的输出。
-help, h显示命令摘要然后退出。未实现十六进制转储。
-include, i生成 C 头文件样式。除非 xxd 命令通过 stdin 读取,否则会指定一个完全静态的数组定义。
-len len, I len在指定字节数后停止。
o offset添加到指定的文件的位置。
-plain, -postscript, -ps, p生成连续的 PostScript 风格的十六进制转储。也称为纯十六进制转储风格。
-revert, r将十六进制转储转换为二进制。
seek offset当在 -r 之后使用时,使用 偏移量在十六进制转储中检测到的文件位置进行恢复。
u默认是小写。使用大写十六进制字母。
-version, v显示版本字符串。

退出状态

xxd 命令包含以下返回码

0无错误
-1不支持该操作
1解析选项时出错
2输入文件错误
3输出文件错误
4,5搜索位置不可用

示例

以下示例代表了 xxd 命令的几种用法。

打印文件的前 20 个字节

以上命令将读取 file1 的内容,提取前 20 个字节,然后将其打印为十六进制转储。第一个命令以十进制显示长度,第二个命令以十六进制显示长度,第三个命令以八进制显示长度。

打印文件的最后 20 个字节

以上命令将读取 file1 的内容,跳转到文件末尾,向后搜索 20 个字节,然后从那里开始向前打印为十六进制转储。第一个命令以十进制显示长度,第二个命令以十六进制显示长度,第三个命令以八进制显示长度。

将文件的前 5 个字节打印为位

以上命令将读取 file1 的内容,提取前 5 个字节,然后将其打印为二进制转储。