head命令默认显示文件前10行,不加载全文、效率高,适合快速预览;基本用法为head filename,支持-n n指定行数(如head -n 50 file.log),多文件时自动添加文件名标题。

head 命令的基本用法和默认行为
head 默认输出文件的前 10 行,不加任何参数时行为稳定、开销极小,适合快速预览日志或配置文件。它逐行读取,遇到换行符就计数,不会加载整个文件到内存,对大文件(如几 GB 的日志)也很友好。
基本写法就是:head filename。如果文件不存在或权限不足,会直接报错 No such file or directory 或 Permission denied,不会静默失败。
指定行数:-n 参数的正确写法和常见错误
要用 head 查看前 N 行,必须用 -n 选项,格式是 head -n N filename,比如 head -n 50 access.log 查前 50 行。注意:-n50(无空格)也合法,但 -n 50 更清晰、更少歧义。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 别写成
head -n=N或head --lines=N—— 大多数 Linux 发行版不支持等号赋值形式 -
N可以是 0,此时输出为空(不是报错),可用于脚本中判断文件是否为空 - 若
N超过文件总行数,head只输出实际存在的行,不会补空行
同时查看多个文件时的标题分隔问题
当运行 head file1.txt file2.json,head 默认会在每份输出前加上 ==> file1.txt 这样的分隔标题。这在管道处理中可能干扰后续命令(比如 <code>grep 匹配失败)。
- 加
-q参数可禁用标题:head -q -n 10 *.log - 加
-v可强制显示标题(默认已启用,一般不用) - 如果只处理一个文件,标题不会出现,无需额外处理
和 tail、sed 对比:什么情况下不该用 head
head 是最轻量的“取头”工具,但不是万能的。以下场景建议换方案:
- 要从第 M 行开始取 N 行(即跳过前 M−1 行),用
sed -n 'M,Np'或tail -n +M | head -n N,但后者多启一个进程,大文件下略低效 - 要按字节而非行数截取(比如前 1KB),用
head -c 1024 filename,注意-c和-n互斥,不能混用 - 文件是二进制或含大量 \0 字符(如某些数据库导出),
head仍按换行符切分,可能只输出第一行就停住——这时得用dd或专用工具
真正要注意的是:当文件被其他进程持续写入(比如实时日志),head 读到 EOF 就结束,不会等待新内容;想动态追加,得换 tail -f 配合信号控制。










