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 字节的标准格式
相关推荐
还不秃顶的计科生28 分钟前
LeetCode 热题 100第二题:字母易位词分组python版本
linux·python·leetcode
咯哦哦哦哦30 分钟前
WSL + ubantu22.04 + 远程桌面闪退+黑屏闪退解决
linux·开发语言
fantasy5_537 分钟前
Linux 动态进度条实战:从零掌握开发工具与核心原理
linux·运维·服务器
weixin_462446231 小时前
exo + tinygrad:Linux 节点设备能力自动探测(NVIDIA / AMD / CPU 安全兜底)
linux·运维·python·安全
..过云雨1 小时前
17-2.【Linux系统编程】线程同步详解 - 条件变量的理解及应用
linux·c++·人工智能·后端
oMcLin2 小时前
CentOS 7 频繁出现 “Connection Refused” 错误的原因分析与解决
linux·运维·centos
饭九钦vlog2 小时前
银河麒麟修复openssh升级脚本
linux·运维
航Hang*3 小时前
第1章:初识Linux系统——第13节:总复习②
linux·笔记·学习·centos
Amy_au3 小时前
Linux week 01
linux·运维·服务器
KingRumn3 小时前
DBUS源码剖析之DBusMessage数据结构
linux·服务器·数据结构