首页/系统/Linux 运维命令速查/head 查看文件开头
文本处理77 条

head 查看文件开头

默认输出前 10 行:看 CSV 表头、配置头、协议样例的第一选择;-c 按字节、-n -N 显示「除最后 N 行」。

Linux 运维命令速查系统更新于 2026-10-13

head 是什么

head 输出文件开头的若干行,默认 10 行,是看 CSV 表头、配置文件结构、协议报文样例的第一选择。它同时支持按行(-n)与按字节(-c)两种口径,负数写法表示「除最后 N 行之外的全部」。多个文件一起给时会自动插入文件名标题,这一点在脚本里既是便利也是陷阱。

基本信息

适用平台Linux、Unix 通用(GNU coreutils)
命令语法head [选项] [文件...]
常用选项-n N 前 N 行 / -n -N 除最后 N 行 / -c N 前 N 字节 / -q 不打印标题 / -v 强制打印标题 / -z 以 NUL 分隔
与 tail 的关系一个看头一个看尾,常配合用于快速摸清文件结构

典型使用场景

  • 确认 CSV 或数据导出的表头字段名与顺序
  • 快速看配置文件的段落结构,再决定改哪一段
  • 取二进制文件头部字节做类型判断
  • 抽样查看日志格式,写解析脚本前先确认字段分隔
  • 与大文件配合:head 看开头结构,tail 看结尾现状

常用示例

常用示例
head app.log                 # 前 10 行
head -n 100 access.log       # 前 100 行
head -c 512 header.bin       # 前 512 字节
head -n -5 data.csv          # 除最后 5 行之外的全部(GNU 扩展)
head -q -n 1 *.csv           # 多文件只取值,不打印标题
head -v -n 3 *.conf          # 强制打印标题,文件少时更清楚

常用选项

选项作用提示
-n N输出前 N 行最常用的形式
-n -N输出除最后 N 行之外的全部GNU 扩展,BSD 与 macOS 不支持
-c N输出前 N 字节适合二进制或定长记录
-q多文件时不打印文件名标题脚本解析更省事
-v总是打印文件名标题文件少时需要区分来源
-z以 NUL 而不是换行分隔记录GNU 扩展
head -n -5 这种负数写法是 GNU 扩展,BSD 与 macOS 的 head 不支持;跨平台脚本要改用 sed、tac 或者 wc 加 tail 的组合来实现同样效果。
多个文件时每段前会加一行文件名标题,脚本里直接解析常被这一行绊倒;要么加 -q 去掉,要么只处理单个文件。
需要「除最后 N 行」之外的跨平台写法:先算总行数再用 head 截取,例如 head -n $(( $(wc -l < data.csv) - 5 )) data.csv;也可以用 sed 删除末行来实现。这两种方式在 BSD 与 macOS 上同样可用,比依赖 GNU 扩展的负数写法更稳。

易错点

  • head -n -5 的负数是 GNU 扩展,BSD 与 macOS 不支持,跨平台脚本要换方案
  • 多文件时默认插入标题行,脚本解析被这行坑是常见事故
  • 按字节截断可能切在多字节字符中间,得到乱码;处理中文文本优先按行
  • 对正在写入的文件用 head 只读到当下已有的内容,不代表完整数据
  • head 提前关闭输入流,配合管道时上游可能收到 SIGPIPE 而报错,脚本里要留意
  • 用 head 的结果判断文件是否完整:文件正在写入时截取到的是当下的片段,长度不代表最终内容,判断完整性要看写入方是否已结束

数据来源与参考

  • man 1 head(GNU coreutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌