Skip to content

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.txt
text
1
2
3
4
5
6
7
8
9
10

不加任何选项,默认就是前 10 行。

示例 2:指定看前 3 行 ​

bash
head -3 long.txt
text
1
2
3

head -3 是 head -n 3 的简写,两种写法等价。

示例 3:用长选项写清楚 ​

bash
head -n 5 long.txt
text
1
2
3
4
5

脚本里用 -n 5 更清晰可读。

示例 4:按字节而不是按行截取 ​

bash
head -c 12 long.txt
text
1
2
3
4
5
6

这里截取了前 12 个字节(注意换行符 \n 也算一个字节),不是按行算。

示例 5:去掉最后几行,保留前面所有 ​

bash
head -n -45 long.txt
text
1
2
3
4
5

-n -45 的意思是"除了最后 45 行,前面都要"。50 行的文件去掉最后 45 行,就剩前 5 行。

示例 6:一次看多个文件 ​

bash
head -n 3 nums.txt demo.txt
text
==> nums.txt <==
10
2
33

==> demo.txt <==
apple
banana
apple

多文件时,head 自动在每个文件前打印 ==> 文件名 <== 作为分隔。

示例 7:总是打印文件名头 ​

bash
head -v -n 2 nums.txt
text
==> 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 等差异。

七、新手易错点 ​

  1. head 默认只看 10 行:不是整个文件,想看全部用 cat 或 less。
  2. -n 后面数字别忘写:head -n 不带数字会报错。
  3. -c 是按字节不是按行:截二进制文件、看文件头时用 -c;按行看用 -n。
  4. 负数 -n -N 容易误会:它表示"去掉结尾 N 行",不是"倒数 N 行"——倒数结尾 N 行要用 tail -n N。
  5. 多文件输出带文件名头:脚本里想纯数据要加 -q,不然 ==> 文件 <== 会混进来。
  6. head 是只读命令,可放心用。

八、相关命令与文档 ​