概述
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`)