命令结构
tail -c 100 filename | xxd这个命令由三部分组成,通过管道|连接:
1.tail -c 100 filename
tail: 显示文件末尾内容的命令-c 100: 指定以字节为单位,显示最后 100 个字节-c表示 “character”,但在二进制上下文中就是字节100是要显示的字节数(可以是任意数字)
filename: 要操作的目标文件
作用: 读取文件的最后 100 个字节,并将这些字节输出到标准输出(stdout)。
2.管道符|
- 作用: 将前一个命令(
tail)的输出,作为后一个命令(xxd)的输入 - 机制: 创建一个数据传输通道,将
tail的标准输出重定向到xxd的标准输入
3.xxd
- 功能: 十六进制转储工具(hexdump 的替代/增强版)
- 特点:
- 默认以分组形式显示十六进制(每 2 字节一组,如
4b6f) - 同时显示对应的 ASCII 字符
- 显示偏移地址(文件位置)
- 默认以分组形式显示十六进制(每 2 字节一组,如
整体工作流程:
tail定位到文件末尾,读取最后 100 个字节- 这 100 个字节通过管道传递给
xxd xxd将这些字节转换为十六进制格式并显示
示例输出解释:
$tail-c32test.txt|xxd# 输出可能如下:00000000: 6c69 6e6520330a6c 696e6520340a 6c69 ne3.line4.li 00000010: 6e6520350a6c 696e6520360a 0a0a ne5.line6...字段解释:
00000000:行首的偏移地址(十六进制)6c69 6e65 2033 0a6c 696e 6520 340a 6c69: 十六进制表示的字节- 每 2 个十六进制数字 = 1 个字节
- 每组(如
6c69)= 2 个字节(4 个十六进制数字)
ne 3.line 4.li: ASCII 字符表示6c= ‘l’,69= ‘i’,6e= ‘n’,65= ‘e’, 等等- 不可打印字符显示为
.
变体和对比:
不同显示格式:
# 1. 紧凑格式(一行显示更多)tail-c100file|xxd -c32# 每行显示32字节# 2. 单字节分组(更清晰)tail-c100file|xxd -g1# 每字节一组显示# 3. 纯十六进制(无ASCII侧边栏)tail-c100file|xxd -ps# 连续十六进制字符串# 4. 显示原始偏移量tail-c100file|xxd -s 0x1000# 假设你希望偏移从0x1000开始与hexdump -C对比:
# 功能相似,但格式不同tail-c100file|hexdump -C# hexdump -C 输出格式:# 00000000 6c 69 6e 65 20 33 0a 6c 69 6e 65 20 34 0a 6c 69 |line 3.line 4.li|# 更传统的格式,单字节显示实际应用场景:
- 查看文件尾部的魔数/签名:
tail-c8image.jpg|xxd# 查看JPEG的结束标记- 检查日志文件最后的二进制数据:
tail-c256app.log|xxd -g1- 快速查看文件格式:
# 查看文件最后部分,判断是否有特殊结构tail-c64database.db|xxd这个组合命令特别适合需要查看文件尾部十六进制格式的场景,结合了tail的截取能力和xxd的格式化显示能力。
当然可以!有几种快速查看文件最后几个字节的方法:
1.最常用的方法 -tail命令
# 查看最后 100 个字节(以文本形式)tail-c100filename# 查看最后 50 个字节tail-c50filename2.使用hexdump查看最后字节的十六进制
# 查看最后 100 个字节的十六进制tail-c100filename|hexdump -C# 或者直接让 hexdump 显示最后部分hexdump -C filename|tail-n103.更专业的十六进制查看工具
# 使用 xxd 查看最后 100 个字节tail-c100filename|xxd# 查看最后 64 个字节并显示偏移量tail-c64filename|xxd -g14.使用od(八进制/十六进制转储)
# 查看最后 50 个字节的十六进制tail-c50filename|od -Ax -tx1# 以十六进制和 ASCII 格式查看tail-c100filename|od -Ax -tx1z5.最简洁的实时查看
# 只查看最后几个字节(例如最后32字节)tail-c32filename|cat-A# 如果需要连续监控文件尾部变化tail-c100-f filename# 会持续显示新增内容示例对比:
# 查看文件最后 64 字节的不同方式:# 1. 纯文本查看tail-c64file.bin# 2. 十六进制 + ASCII(最常用)tail-c64file.bin|hexdump -C# 3. 紧凑的十六进制tail-c64file.bin|xxd -ps -c16# 4. 带行号的十六进制tail-c64file.bin|xxd -g1推荐用法:
- 快速查看文本文件末尾:
tail -c N - 查看二进制文件末尾十六进制:
tail -c N | hexdump -C - 需要精确的字节偏移:
tail -c N | xxd -g 1
其中hexdump -C是最常用的格式,因为它同时显示:
- 偏移地址
- 十六进制字节
- ASCII 字符表示
- 每行 16 字节的标准格式