Linux快速查看文件末尾字节方法

命令结构

复制代码
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 字符
    • 显示偏移地址(文件位置)

整体工作流程:

  1. tail 定位到文件末尾,读取最后 100 个字节
  2. 这 100 个字节通过管道传递给 xxd
  3. xxd 将这些字节转换为十六进制格式并显示

示例输出解释:

bash 复制代码
$ tail -c 32 test.txt | xxd

# 输出可能如下:
00000000: 6c69 6e65 2033 0a6c 696e 6520 340a 6c69  ne 3.line 4.li
00000010: 6e65 2035 0a6c 696e 6520 360a 0a0a       ne 5.line 6...

字段解释:

  • 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', 等等
    • 不可打印字符显示为 .

变体和对比:

不同显示格式:

bash 复制代码
# 1. 紧凑格式(一行显示更多)
tail -c 100 file | xxd -c 32  # 每行显示32字节

# 2. 单字节分组(更清晰)
tail -c 100 file | xxd -g 1   # 每字节一组显示

# 3. 纯十六进制(无ASCII侧边栏)
tail -c 100 file | xxd -ps     # 连续十六进制字符串

# 4. 显示原始偏移量
tail -c 100 file | xxd -s 0x1000  # 假设你希望偏移从0x1000开始

与 hexdump -C 对比:

bash 复制代码
# 功能相似,但格式不同
tail -c 100 file | 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|
# 更传统的格式,单字节显示

实际应用场景:

  1. 查看文件尾部的魔数/签名:
bash 复制代码
tail -c 8 image.jpg | xxd  # 查看JPEG的结束标记
  1. 检查日志文件最后的二进制数据:
bash 复制代码
tail -c 256 app.log | xxd -g 1
  1. 快速查看文件格式:
bash 复制代码
# 查看文件最后部分,判断是否有特殊结构
tail -c 64 database.db | xxd

这个组合命令特别适合需要查看文件尾部十六进制格式的场景,结合了 tail 的截取能力和 xxd 的格式化显示能力。


当然可以!有几种快速查看文件最后几个字节的方法:

1. 最常用的方法 - tail 命令

bash 复制代码
# 查看最后 100 个字节(以文本形式)
tail -c 100 filename

# 查看最后 50 个字节
tail -c 50 filename

2. 使用 hexdump 查看最后字节的十六进制

bash 复制代码
# 查看最后 100 个字节的十六进制
tail -c 100 filename | hexdump -C

# 或者直接让 hexdump 显示最后部分
hexdump -C filename | tail -n 10

3. 更专业的十六进制查看工具

bash 复制代码
# 使用 xxd 查看最后 100 个字节
tail -c 100 filename | xxd

# 查看最后 64 个字节并显示偏移量
tail -c 64 filename | xxd -g 1

4. 使用 od(八进制/十六进制转储)

bash 复制代码
# 查看最后 50 个字节的十六进制
tail -c 50 filename | od -Ax -tx1

# 以十六进制和 ASCII 格式查看
tail -c 100 filename | od -Ax -tx1z

5. 最简洁的实时查看

bash 复制代码
# 只查看最后几个字节(例如最后32字节)
tail -c 32 filename | cat -A

# 如果需要连续监控文件尾部变化
tail -c 100 -f filename  # 会持续显示新增内容

示例对比:

bash 复制代码
# 查看文件最后 64 字节的不同方式:

# 1. 纯文本查看
tail -c 64 file.bin

# 2. 十六进制 + ASCII(最常用)
tail -c 64 file.bin | hexdump -C

# 3. 紧凑的十六进制
tail -c 64 file.bin | xxd -ps -c 16

# 4. 带行号的十六进制
tail -c 64 file.bin | xxd -g 1

推荐用法:

  • 快速查看文本文件末尾 :tail -c N
  • 查看二进制文件末尾十六进制 :tail -c N | hexdump -C
  • 需要精确的字节偏移 :tail -c N | xxd -g 1

其中 hexdump -C 是最常用的格式,因为它同时显示:

  • 偏移地址
  • 十六进制字节
  • ASCII 字符表示
  • 每行 16 字节的标准格式
相关推荐
雯宝2 小时前
mnt_init 函数
linux
律宏阔8 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔8 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴8 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千9 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei379 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei379 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei379 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
GeW9 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux
GeW9 小时前
工业场景中的Linux与数据库选型:高端化转型的技术底座
linux