od 看的是原始字节
od 是经典的字节转储工具:-c 按字符形式显示(换行、回车、制表符等转义可见),-tx1 按单字节十六进制显示,-An 去掉地址列,-v 关闭重复行折叠。排查魔数不对、行尾是 LF 还是 CRLF、文本里混入 BOM 或零宽字符这类问题,它比任何文本编辑器都可靠,因为输出的就是文件里真实存在的字节。
基本信息
| 适用平台 | Linux 与类 Unix(GNU coreutils) |
|---|---|
| 语法 | od [选项] [文件](不加文件则读标准输入) |
| 常用选项 | -c 字符、-tx1/-tx2 十六进制、-An 去地址、-v 不折叠、-N 限制字节、-j 跳过字节 |
| 相关命令 | hexdump、xxd、file |
| 典型判读 | 行尾、BOM、魔数、不可见字符 |
典型使用场景
- 确认文件开头魔数是否正确,判断文件类型与是否损坏
- 检查行尾是 LF 还是 CRLF(跨平台脚本报错常见原因)
- 找出文本里的不可见字符(BOM、零宽字符、全角空格)
- 对比两个文件头部若干字节的差异
- 二进制协议调试时核对原始字节
常用示例
常用示例
od -c file | head # 字符形式:换行显示为 \n、回车显示为 \r
od -An -tx1 -v sample.bin | head # 十六进制单字节、去地址、不折叠重复行
od -c -N 16 file # 只看前 16 字节,判断魔数最快
od -An -tx1 -N 8 -j 8 file # 跳过前 8 字节再看 8 字节,比较文件头差异
printf 'A\r\n' | od -c # 验证 CRLF:直观看到 \r 与 \n 两个字节
od -c file | tail -3 # 看文件结尾是否带换行
file file && hexdump -C file | head -1 # 与 file、hexdump 交叉验证结论选项与输出读法
| 选项/字段 | 含义 | 怎么用 |
|---|---|---|
| -c | 按字符显示,转义字符显式可见 | 查换行、回车、制表符最快 |
| -tx1 | 每字节两位十六进制 | 看原始字节与魔数,配合 -An 更清爽 |
| -tx2 / -td4 | 双字节、四字节整数 | 涉及字节序时要显式指定,别用默认格式猜 |
| -An | 去掉行首地址列 | 便于直接复制字节内容 |
| -v | 关闭重复行折叠(默认显示为星号) | 要看全量内容必须加 |
| -N / -j | 限制读取字节数、跳过前若干字节 | 只看文件头时最有效率 |
判断文件类型先用 file,需要证据再用 od 亲眼确认字节:一个给结论,一个给依据,两者结合结论最扎实。
文本文件开头出现多余的前导字节(如 BOM 的 EF BB BF)时,用 od -An -tx1 -N 8 一看就知道,比在编辑器里反复确认可靠得多。