> 文本处理与搜索 > xxd

xxd: 十六进制转储和反转工具

xxd 命令是一个用于将文件转储为十六进制格式输出,或将十六进制转储反转为原始二进制文件的工具。它比 `hexdump` 更灵活,尤其是在编辑二进制文件内容并将其恢复为原始文件时非常有用。

概述

xxd 与 `hexdump` 或 `od` 类似,可以以十六进制和 ASCII 字符串形式显示二进制文件的内容。但其最大的特点是具备将转储内容恢复为原始二进制文件的**反转功能**。得益于此功能,可以在文本编辑器中以十六进制形式修改二进制文件,然后使用 `xxd -r` 将其保存回二进制文件。这种灵活性在分析和修改二进制文件时非常强大,尤其与 `vim` 编辑器结合使用时。

主要特点

xxd 命令的主要特点如下:

  • 以十六进制和 ASCII 格式输出文件内容。
  • 可以将十六进制转储反转为原始二进制文件。
  • 可与普通文本编辑器一起用于修改二进制文件。
  • 提供多种选项以精细控制输出格式。

xxd 与 hexdump 的区别

xxd 和 hexdump 在十六进制转储功能上相似,但最大的区别在于是否提供反转功能。

  • xxd: 提供将十六进制转储恢复为原始二进制文件的`反转`功能(`-r`)。与 `vim` 的集成功能强大。
  • hexdump: 专注于转储功能的工具,不提供反转功能。

主要选项

根据用途对常用的 xxd 命令选项进行了分组。

1) 转储和反转选项

2) 帮助

生成的命令:

请尝试组合命令。

描述:

`xxd` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 xxd 命令的各种使用示例来学习其功能。

文件内容十六进制转储

echo 'Hello World!' > test.txt
xxd test.txt

以十六进制和 ASCII 字符形式输出 `test.txt` 文件的内容。

将十六进制转储保存到文件

xxd /bin/ls > ls_dump.txt

将二进制文件 `/bin/ls` 的内容保存到 `ls_dump.txt` 文件。

将转储文件反转为原始文件

xxd -r ls_dump.txt ls_copy

将之前保存的 `ls_dump.txt` 文件恢复为原始二进制文件 `ls_copy`。**此功能是 xxd 最大的特点。**

与 vim 一起编辑二进制文件

vim file.bin
(vim에서) :%!xxd
(编辑)
(vim에서) :%!xxd -r

在 `vim` 中使用 `%!xxd` 命令将当前文件切换到十六进制转储模式,修改后,再使用 `%!xxd -r` 恢复并保存。

安装

xxd 包含在 `vim` 软件包中。由于大多数 Linux 发行版都默认安装了 `vim-common` 或 `vim` 软件包,因此通常无需额外安装。

Debian/Ubuntu

sudo apt update
sudo apt install -y vim-common

RHEL/CentOS/Fedora

sudo dnf install -y vim-common

提示与注意事项

总结了使用 xxd 命令时需要注意的事项。

提示

  • `xxd` 的 `-r` 选项只能正确反转由 `xxd` 生成的转储文件。它可能不适用于其他格式的十六进制转储文件。
  • 修改二进制文件时必须非常小心。一个错误的字节可能会破坏整个程序。
  • 反转时,为避免覆盖原始文件,始终将其保存为不同的文件名会更安全。(例如:`xxd -r old.hex > new.bin`)

相关命令

功能上相似或经常一起使用的命令。


相同类别命令