- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
导读
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 统一的数值约定,便于书写大数量级的参数:
| 后缀 | 含义 | 换算 |
|---|---|---|
b | 512 | 512 |
kB | 1000 | 1000 |
k | 1024 | 1024 |
MB | 1000×1000 | 1,000,000 |
M | 1024×1024 | 1,048,576 |
GB | 1000×1000×1000 | 1,000,000,000 |
G | 1024×1024×1024 | 1,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文档既是命令行速查手册,也是该站点"命令索引"数据源之一,可通过站内搜索直接定位。
注意事项
head是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 head,更详尽的官方说明可阅读info coreutils 'head invocation'。- 不同发行版/BSD 系统的
head实现细节可能存在差异,本文选项与行为以 GNU 版本为准。 head默认按"行"处理文本,对大文件而言读取的是文件开头,性能开销小;但head -c直接按字节截取,遇到 UTF-8 等多字节字符时可能截断字符,需要按边界对齐时请谨慎使用。- 在脚本中使用
head -n -N这类带负号的数值参数时,建议写作head -n -5 file或使用--lines=-5长选项形式,避免与选项解析产生歧义。
- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
相关推荐
深度解析:Qwen3.6-27B无审查模型如何实现零拒绝率革命
深度解析:Qwen3.6 27B无审查模型如何实现零拒绝率革命 你是否曾因AI模型的审查机制而无法获得想要的答案?在信息自由探索的道路上,Qwen3.6 27B
bzmore 命令详解:分页查看 .bz2 压缩文本文件内容(linux-command 速查手册)
bzmore 命令详解:分页查看 .bz2 压缩文本文件内容(linux command 速查手册) 导读 bzmore 是 bzip2 压缩工具家族中专门用于
文档教程ONNX Runtime 错误排查完全指南:从装环境到 GPU 提速,一篇搞定
ONNX Runtime 错误排查完全指南:从装环境到 GPU 提速,一篇搞定 刚把模型部署到 ONNX Runtime 就跑不通?别急,绝大多数 ONNX R
人工智能推理引擎本地部署深度学习机器学习
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考