您当前的位置:首页 > 计算机 > 系统应用 > Linux

Linux hexdump命令

时间:06-20来源:作者:点击数:
CDSY,CDSY.XYZ

hexdump 是 Linux 中一个强大的二进制文件查看工具,可以用于查看文件的十六进制、ASCII 或其他格式的转储内容。以下是常见用法及示例:


1. 查看文件头部(前 N 个字节)
语法
hexdump -n <字节数> -C <文件名>
示例:查看前 32 个字节
hexdump -n 32 -C file.bin
  • -n 32:仅读取前 32 个字节。
  • -C:以经典格式显示(左侧十六进制,右侧 ASCII)。
输出示例
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 3e 00 01 00 00 00  a0 10 40 00 00 00 00 00  |..>.......@.....|

2. 查看文件尾部(最后 N 个字节)

需要结合 tail 截取文件尾部内容,再通过管道传递给 hexdump

语法
tail -c <字节数> <文件名> | hexdump -C
示例:查看最后 64 个字节
tail -c 64 file.bin | hexdump -C
  • tail -c 64:截取文件的最后 64 个字节。
  • 通过管道传递给 hexdump 解析。

3. 跳过前 M 字节后查看 N 字节
语法
hexdump -s <跳过字节数> -n <读取字节数> -C <文件名>
示例:跳过前 1024 字节,读取后续 64 字节
hexdump -s 1024 -n 64 -C file.bin

4. 自定义显示格式
语法

使用 -e 参数指定格式字符串:

hexdump -e '<格式字符串>' <文件名>
示例 1:每行显示 16 字节,十六进制 + ASCII
hexdump -e '16/1 "%02x " " | "' -e '16/1 "%_p" "\n"' file.bin
  • 16/1 "%02x ":每字节显示为 2 位十六进制,共 16 字节。
  • " | ":分隔符。
  • 16/1 "%_p":显示可打印 ASCII 字符,不可打印字符显示为 .
示例 2:仅显示十六进制字节值
hexdump -v -e '/1 "%02x "' file.bin
  • -v:禁用重复行压缩。
  • /1 "%02x ":每字节显示为 2 位十六进制,以空格分隔。

5. 显示文件全部内容
语法
hexdump -C <文件名>
  • -C:经典模式(十六进制 + ASCII)。
输出示例
00000000  48 65 6c 6c 6f 20 57 6f  72 6c 64 21 0a           |Hello World!.|
0000000d

6. 高级用法
直接查看内存映射设备
hexdump -C /dev/mem -s 0x1000 -n 16
  • 查看内存地址 0x1000 处的 16 字节。
显示十进制字节值
hexdump -e '/1 "%3d "' -e '/1 "%_p\n"' file.bin
  • 将字节以十进制数值显示,并附加 ASCII 字符。

总结
  • 头部字节hexdump -n <N> -C <文件>
  • 尾部字节tail -c <N> <文件> | hexdump -C
  • 跳过字节hexdump -s <M> -n <N> -C <文件>
  • 格式控制:灵活使用 -e 参数自定义输出。

根据需求选择参数组合,可高效分析二进制文件的结构!

=======================================================

tail 是 Linux 中一个非常实用的命令,主要用于查看文件的末尾内容,常用于实时监控日志文件或快速查看大文件的尾部数据。以下是 tail 的常见用法及示例:


1. 基础用法
查看文件末尾的默认行数(默认 10 行)
tail filename.txt
示例
tail /var/log/syslog

输出文件 /var/log/syslog 的最后 10 行内容。


2. 指定显示的行数
查看文件末尾的 N 行
tail -n <行数> filename.txt
# 或简写为
tail -<行数> filename.txt
示例:查看最后 5 行
tail -n 5 access.log
# 等效命令
tail -5 access.log

3. 指定显示的字节数
查看文件末尾的 N 个字节
tail -c <字节数> filename.txt
示例:查看最后 100 个字节
tail -c 100 data.bin

4. 实时监控文件变化
持续跟踪文件更新(常用于日志监控)
tail -f filename.log
  • -f(follow)会实时显示文件新增的内容(按 Ctrl+C 退出)。
示例:实时监控 Nginx 日志
tail -f /var/log/nginx/access.log

5. 高级监控(结合进程管理)
监控文件直到进程结束
tail -f --pid=<进程PID> filename.log
  • --pid:当指定进程结束时,自动停止监控。
示例:监控日志直到进程 1234 结束
tail -f --pid=1234 app.log

6. 显示多个文件
同时查看多个文件的末尾内容
tail -n 5 file1.txt file2.txt

输出每个文件的最后 5 行,并在内容前显示文件名。


7. 静默模式(不显示文件名标题)
禁用多文件显示时的文件名前缀
tail -q -n 5 file1.txt file2.txt
  • -q(quiet):合并输出多个文件的内容,不显示文件名。

8. 从第 N 行开始显示到末尾
跳过前 M 行,显示剩余所有行
tail -n +<起始行号> filename.txt
示例:从第 20 行开始显示到末尾
tail -n +20 data.csv

9. 结合其他命令(管道操作)
常用场景:过滤日志
tail -f error.log | grep "ERROR"

实时监控 error.log,仅显示包含 “ERROR” 的行。

结合 hexdump 查看二进制文件尾部
tail -c 64 binaryfile.bin | hexdump -C

10. 指定监控间隔(仅限某些系统)
设置检查文件更新的间隔时间
tail -f -s <秒数> filename.log
  • -s:例如 -s 2 表示每 2 秒检查一次文件更新。

常见选项总结
选项 说明
-n <N> 显示最后 N 行(默认 10 行)
-c <N> 显示最后 N 个字节
-f 实时跟踪文件更新
-F 类似 -f,但会处理文件被删除/重建的情况(如日志轮转)
-q 静默模式(不显示文件名标题)
--pid=<PID> 监控文件直到指定进程结束
-s <秒> 设置监控间隔时间

经典场景示例
1. 快速查看日志尾部
tail -n 20 /var/log/auth.log
2. 实时监控应用日志并过滤关键字
tail -f /opt/app/logs/debug.log | grep "WARNING"
3. 查看二进制文件尾部并解析
tail -c 128 image.jpg | hexdump -C
4. 监控多个日志文件
tail -f /var/log/nginx/access.log /var/log/nginx/error.log

注意事项
  1. 权限问题:如果文件不可读,会提示权限不足。
  2. 文件不存在:使用 -F 替代 -f 可自动重试打开文件。
  3. 二进制文件:直接使用 tail 查看二进制文件可能会显示乱码,建议结合 hexdump

掌握这些用法后,你可以高效地分析日志、调试程序或处理大型文件!

CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐