☰
head 命令详解:Linux 文件开头内容查看与文本处理实战
2026/10/1 2:02:25 网站建设 项目流程
  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

导读

head是 Linux 系统中用于显示文件开头部分内容的核心命令,也是 GNU coreutils 包中与tail、less齐名的文本查看三件套之一。本文基于本仓库(Linux 命令大全搜索工具项目,command/head.md)中的官方手册文档,系统讲解head的语法、全部选项、NUM 乘数后缀规则、多文件处理行为与管道用法,并结合仓库内的姊妹命令文档与源码结构,给出可直接复制的实战示例,帮助你快速定位日志头部、校验文件起始字节、配合管道构建文本处理流水线。

head 命令是什么

head命令的作用非常单一且明确:显示文件的开头部分。它读取指定文件的前若干行(默认 10 行)并输出到标准输出,是日常排查日志、预览配置、确认文件格式时使用频率极高的工具。

在 command/head.md 文档中,该命令被定位为:

  • 在未指定行数时默认显示前 10 行;
  • 处理多个文件时会在各个文件之前附加含有文件名的行;
  • 当没有文件或文件为-时,读取标准输入。

结合仓库中收录的姊妹命令文档 command/tail.md(显示文件末尾若干行)与 command/less.md(分屏上下翻页浏览文件),可以构成一套完整的文本查看方案:head看开头、tail看结尾、less交互式浏览全文。

语法与参数

head的语法形式为:

head [OPTION]... [FILE]...

参数说明:

  • FILE(可选):要处理的文件,可以为一或多个;不指定文件或指定文件名为-时,从标准输入读取。

返回值

命令执行成功返回0,发生错误时返回非0值。该约定与 GNU coreutils 其他命令一致,便于在脚本中用$?判断执行结果。

选项详解

head的全部选项如下表所示:

选项说明
-c, --bytes=[-]NUM显示前 NUM 字节;如果 NUM 前有-,那么会打印除了文件末尾的 NUM 字节以外的其他内容
-n, --lines=[-]NUM显示前 NUM 行而不是默认的 10 行;如果 NUM 前有-,那么会打印除了文件末尾的 NUM 行以外的其他行
-q, --quiet, --silent不打印文件名行
-v, --verbose总是打印文件名行
-z, --zero-terminated行终止符为 NUL 而不是换行符
--help显示帮助信息并退出
--version显示版本信息并退出

其中两个核心选项需要重点理解:

-n, --lines=NUM(行数控制):默认输出前 10 行,指定 NUM 后按 NUM 行输出。注意 NUM 前带-时语义会发生反转——不再是"显示前 N 行",而是"打印除文件末尾 N 行以外的所有内容",即从第 1 行显示到倒数第 N+1 行。例如head -n -5 file.log会输出除最后 5 行外的全部内容。

-c, --bytes=NUM(字节数控制):以字节为单位截取文件开头,适用于二进制文件校验、按固定长度拆分等场景。与行数选项相同,NUM 前带-时表示"排除末尾 NUM 字节"。

-z选项针对以 NUL 字节(\0)而非换行符(\n)分隔记录的文件(如部分进程间通信数据),此时换行不再是记录边界,需要显式告知head改用 NUL 作为终止符。

NUM 乘数后缀规则

head中的 NUM 支持乘数后缀,这是 GNU coreutils 统一的数值约定,便于书写大数量级的参数:

后缀含义换算
b512512
kB10001000
k10241024
MB1000×10001,000,000
M1024×10241,048,576
GB1000×1000×10001,000,000,000
G1024×1024×10241,073,741,824
T、P、E、Z、Y以此类推分别对应 2 的 40、50、60、70、80 次幂

同时支持二进制前缀写法:KiB=K、MiB=M,以此类推。也就是说head -c 1M file与head -c 1MiB file等价,均表示 1024×1024 字节;而head -c 1MB file则表示 1,000,000 字节。实际使用时,k/M/G等小写后缀走 1024 进制,kB/MB/GB走 1000 进制,需根据场景选择。

实战示例

查看文件前 N 行

查看历史命令文件的前 6 行:

[user2@pc ~]$ head -n 6 ~/.bash_history #1575425555 cd ~ #1575425558 ls -lh #1575425562 vi ~/Desktop/ZhuangZhu-74.txt

未指定行数时默认显示前 10 行:

head ~/.bashrc

查看多个文件

处理多个文件时,head会在每个文件内容前附加一行==> 文件路径 <==的标题,便于区分来源:

[user2@pc ~]$ head -n ~/.bash_history ~/.bashrc ==> /allhome/user2/.bash_history <== #1575425555 cd ~ #1575425558 ls -lh #1575425562 vi ~/Desktop/ZhuangZhu-74.txt #1575425566 uptime #1575425570 find ~/ -maxdepth 3 -name 'test.sh' -exec lh {} \; ==> /allhome/user2/.bashrc <== # .bashrc # forbid use Ctrl+D to exit shell. set -o ignoreeof # Source global definitions. if [ -f /etc/bashrc ]; then . /etc/bashrc fi

注意上例中head -n未带数值参数,实际等价于默认的 10 行行为。当需要抑制或强制输出文件名标题时,分别使用-q(安静模式,不打印文件名行)与-v(冗余模式,总是打印文件名行),两者对单个文件同样生效。

读取标准输入与管道

head常与管道结合,截取其他命令输出的开头部分:

# 查看目录列表中最大的前几个条目 ls -l | head -n 5 # 查看系统日志文件开头 head /var/log/messages # 从标准输入读取 cat /etc/passwd | head -3

当文件名为-时同样表示读取标准输入:

echo -e "a\nb\nc" | head -2 -

按字节截取

# 显示文件前 1000 字节 head -c 1000 file.bin # 使用乘数后缀,显示前 1M(1024×1024)字节 head -c 1M file.bin # 排除文件末尾 512 字节,输出其余全部内容 head -c -512 file.bin

排除末尾若干行

与tail -n N(只看末尾 N 行)相反,head -n -N输出"除末尾 N 行外的全部内容":

# 查看除最后 5 行以外的所有内容 head -n -5 app.log

与 tail、less 的配合

head很少单独使用,在真实运维场景中通常与 command/tail.md、command/less.md 组合:

  • 日志首尾对比:head -n 20 app.log查看日志开头,tail -n 20 app.log查看日志结尾,判断异常是否贯穿全程;
  • 滚动监控尾部:tail -f app.log持续跟踪新增日志(对应--follow=descriptor按文件描述符追踪,文件被删除或改名后停止),tail -F app.log等价于--follow=name --retry,按文件名追踪并在文件重建后继续;
  • 交互式全文浏览:less app.log支持 PageUp/PageDown 前后翻页、/字符串向下搜索、?字符串向上搜索;
  • 精确截取中间片段:head -n 100 file | tail -n 10取出第 91 至 100 行,这是无sed场景下的经典切片手法。

三者配合grep、awk、sort等命令(仓库中同样收录了 command/grep.md、command/awk.md、command/sort.md 文档),可覆盖绝大多数文本处理需求。

在 linux-command 仓库中的查阅方式

本文对应的原始手册文档位于仓库 command/head.md,与 command/tail.md、command/less.md 等 600 余个命令文档共同构成"Linux 命令大全"内容库(参见仓库 README.md)。

从仓库源码结构看,这些 Markdown 文档会被构建流程渲染为带搜索索引的静态站点:文档详情页由 template/details.ejs 模板渲染(mdhtml即转换后的 HTML 正文),template/list.ejs 负责命令列表页,构建与部署脚本位于 scripts/dash.mjs(生成 Dash 离线文档集)与 scripts/sitemap.js(生成站点地图),依赖声明见 package.json。也就是说,head文档既是命令行速查手册,也是该站点"命令索引"数据源之一,可通过站内搜索直接定位。

注意事项

  1. head是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 head,更详尽的官方说明可阅读info coreutils 'head invocation'。
  2. 不同发行版/BSD 系统的head实现细节可能存在差异,本文选项与行为以 GNU 版本为准。
  3. head默认按"行"处理文本,对大文件而言读取的是文件开头,性能开销小;但head -c直接按字节截取,遇到 UTF-8 等多字节字符时可能截断字符,需要按边界对齐时请谨慎使用。
  4. 在脚本中使用head -n -N这类带负号的数值参数时,建议写作head -n -5 file或使用--lines=-5长选项形式,避免与选项解析产生歧义。
  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

相关推荐

上一篇:GraphQL对接DocuSeal:API查询优化指南
下一篇:2025本地AI革命:GPT-OSS-20B凭什么重塑企业智能化?

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询