主题
head 命令详解:只看文件开头几行
本文是 Linux 命令速查 中
head的从 0 到 1 详解。 目标:把head --help里的每个选项讲清楚,多看几遍后,你在服务器上敲head --help就知道该用哪个选项。 环境依据:GNU coreutils 8.32(Ubuntu 22.04 自带;RHEL/Rocky 自带版本用法一致)。
一、命令是干什么的
head 的意思就是"头部",用来只看文件最开头的一部分(默认前 10 行)。
- 看配置文件开头几行长什么样;
- 看一个大文件的"头",判断它是不是你要找的那个;
- 配合
-n指定看前几行、配合-c指定看前几个字节。
类比:就像翻开一本书,只看最前面的封面和目录页,不用一页页翻到尾。
cat是一口气读完整本书,head只翻开头。
它属于 GNU coreutils,和 tail(看结尾)是一对兄弟命令。
二、命令语法
bash
head [选项]... [文件]...[选项]:可选,控制看几行 / 几字节;[文件]:可选,指定看谁;不写就从标准输入读;可以一次给多个文件。
最简单的用法(默认前 10 行):
bash
head long.txt三、选项全表(对照 head --help)
head 选项很少,主要是控制"看多少"和"多文件时怎么显示"。
1. 控制看多少行 / 多少字节
| 选项 | 中文含义 | 什么场景用 |
|---|---|---|
-n NUM,--lines=NUM | 看前 NUM 行;NUM 前加 - 表示"除了最后 NUM 行都要" | 最常用,如 head -n 20 |
-c NUM,--bytes=NUM | 看前 NUM 个字节;可加 K/M 等单位 | 只想看文件开头几个字节(看文件头格式)时 |
-n和-c的数字都能带单位后缀:b=512、K=1024、M、G等,也支持KB=1000 这种十进制写法。
2. 多文件时的显示控制
| 选项 | 中文含义 | 什么场景用 |
|---|---|---|
-q,--quiet,--silent | 多文件时不打印 ==> 文件名 <== 头 | 输出要给脚本拼接、不想看到文件名标题时 |
-v,--verbose | 多文件时总是打印文件名头 | 哪怕只给一个文件也想看到文件名时 |
-z,--zero-terminated | 行分隔符是 NUL 而不是换行符 | 处理带特殊文件名(含换行)的输入时 |
四、由浅入深的典型示例
演示文件都在 /tmp/sre_shard_txt 下,long.txt 是 1 到 50 的共 50 行数字。
示例 1:默认看前 10 行
bash
head long.txttext
1
2
3
4
5
6
7
8
9
10不加任何选项,默认就是前 10 行。
示例 2:指定看前 3 行
bash
head -3 long.txttext
1
2
3
head -3是head -n 3的简写,两种写法等价。
示例 3:用长选项写清楚
bash
head -n 5 long.txttext
1
2
3
4
5脚本里用
-n 5更清晰可读。
示例 4:按字节而不是按行截取
bash
head -c 12 long.txttext
1
2
3
4
5
6这里截取了前 12 个字节(注意换行符
\n也算一个字节),不是按行算。
示例 5:去掉最后几行,保留前面所有
bash
head -n -45 long.txttext
1
2
3
4
5
-n -45的意思是"除了最后 45 行,前面都要"。50 行的文件去掉最后 45 行,就剩前 5 行。
示例 6:一次看多个文件
bash
head -n 3 nums.txt demo.txttext
==> nums.txt <==
10
2
33
==> demo.txt <==
apple
banana
apple多文件时,
head自动在每个文件前打印==> 文件名 <==作为分隔。
示例 7:总是打印文件名头
bash
head -v -n 2 nums.txttext
==> nums.txt <==
10
2只有一个文件时默认不打印文件名,加
-v强制打印,方便和其他命令的输出区分。
五、高频组合速记
| 命令 | 用途 |
|---|---|
head 文件 | 看文件前 10 行(默认) |
head -n 20 文件 | 看前 20 行 |
head -20 文件 | 同上,简写 |
head -c 100 文件 | 看前 100 字节 |
head -n -5 文件 | 除最后 5 行外全部显示 |
| `命令 | head` |
head -n 1 文件 | 只要第一行 |
六、RHEL 系与 Debian 系差异
head 属于 GNU coreutils,RHEL/CentOS/Rocky 与 Ubuntu/Debian 用法完全一致。细微点:
- 老版本 coreutils 行为相同;
head只读不写,两系无 SELinux 等差异。
七、新手易错点
head默认只看 10 行:不是整个文件,想看全部用cat或less。-n后面数字别忘写:head -n不带数字会报错。-c是按字节不是按行:截二进制文件、看文件头时用-c;按行看用-n。- 负数
-n -N容易误会:它表示"去掉结尾 N 行",不是"倒数 N 行"——倒数结尾 N 行要用tail -n N。 - 多文件输出带文件名头:脚本里想纯数据要加
-q,不然==> 文件 <==会混进来。 head是只读命令,可放心用。
八、相关命令与文档
- 速查页:Linux 命令速查
- 看文件结尾几行:
tail(详解见 tail) - 大文件分页翻:
less(详解见 less 与 more) - 打印整个文件:
cat(详解见 cat) - 管道里怎么取前几行:见 重定向与管道