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 字节的标准格式
相关推荐
Caster_Z3 小时前
WinServer安装VM虚拟机运行Linux-(失败,云服务器不支持虚拟化)
linux·运维·服务器
少废话h4 小时前
Redis主从与集群搭建全指南
大数据·linux·redis·mysql
Cheadmaster5 小时前
20252820_进程管理实验
linux
model20055 小时前
Alibaba linux 3安装LAMP(5)
linux·运维·服务器
哇哈哈&5 小时前
安装wxWidgets3.2.0(编译高版本erlang的时候用,不如用rpm包),而且还需要高版本的gcc++19以上,已基本舍弃
linux·数据库·python
minihuabei7 小时前
跨域拉镜像
linux
王 富贵8 小时前
【Linux】防火墙常用命令(iptables/firewalld/ufw)
linux·运维·服务器
写代码的【黑咖啡】8 小时前
Linux系统简介及常用命令分类详解
linux·运维·服务器
YFLICKERH9 小时前
【Linux系统】ubuntu 25.04 虚拟机联网与DNS域名问题排查案例
linux·ubuntu25.04