xxd
命令是一个十六进制查看工具,用于将文件内容转换为十六进制表示(hexdump),并支持将十六进制格式还原为原始文件。它常用于调试和分析二进制文件。
1. 基本用法
-
语法:
xxd [选项] 文件 xxd [选项] -r [文件]
-
功能:
- 将文件或标准输入的数据转换为十六进制格式输出。
- 将十六进制表示还原为原始文件。
-
此命令是否系统自带:通常系统自带的。若未安装,可以使用以下方法手动安装:
-
Debian/Ubuntu:
sudo apt install vim-common
-
RHEL/CentOS/Fedora:
sudo yum install vim-common
-
其他发行版: 通过包管理器安装
vim-common
。
-
2. 常用参数
- 十六进制转换:
-g <字节数>
:设置每组的字节数(默认为 2)。-c <列数>
:设置每行显示的字节数(默认为 16)。-u
:输出大写十六进制字符。
- 偏移量控制:
-o <偏移量>
:从指定偏移量开始显示。-s <偏移量>
:跳过指定字节数开始输出。支持正负值,负值表示从文件末尾开始计算。
- 还原十六进制表示:
-r, --reverse
:将十六进制格式还原为原始文件。-p
:简化输出格式,仅显示十六进制字符串(无偏移和 ASCII)。
- 其他选项:
--help
:显示帮助信息。--version
:显示命令版本信息。
3. 用法举例
-
将文件转换为十六进制表示:
xxd file.bin
-
设置每行显示 8 个字节:
xxd -c 8 file.bin
-
从偏移量 128 开始输出:
xxd -s 128 file.bin
-
输出大写十六进制表示:
xxd -u file.bin
-
将十六进制表示还原为文件:
xxd -r hexdump.txt restored_file.bin
-
简化输出,仅显示十六进制字符串:
xxd -p file.bin
-
从标准输入读取并转换为十六进制:
echo "Hello, world!" | xxd
4. 注意事项
- 使用
-s
和-o
参数时,确保指定的偏移量在文件范围内,否则可能输出空内容或错误信息。 - 在还原十六进制文件时(使用
-r
),格式必须与xxd
默认输出一致,否则可能导致还原失败或数据错误。 - 对于较大的文件,十六进制输出可能非常冗长,建议结合管道(如
head
或less
)查看部分内容。 - 使用
-p
参数生成的简化十六进制格式不能直接还原为原始文件,需确保正确格式化后再使用-r
。 xxd
是用于文件分析的辅助工具,无法直接解压或解码压缩和加密数据。