在处理大型文件或较长的命令输出时,您很少需要一次性查看所有内容。通常您只想快速查看文件的开头、日志的前几项或CSV的标题行。head 命令正是为此而设计:它会将一个或多个文件或通过管道传入的数据的前几行(默认10行)打印到标准输出。

本指南将说明如何使用 Linux head 命令预览文件并控制打印的行数,并提供最常用选项的实际示例。

head 命令语法

head 命令的语法为:

txt
head [OPTION]... [FILE]...
  • OPTION - head 命令的选项。最常见的选项将在以下各节中介绍。
  • FILE - 零个或多个输入文件名。如果未指定 FILE,或当 FILE 为 - 时,head 将从标准输入读取。

如何使用 head 命令

当不带任何选项使用时,head 命令会显示文件的前十行:

终端
head filename.txt
输出
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行

显示指定行数

使用 -n(--lines)选项指定要显示的行数:

txt
head -n NUMBER filename.txt

要显示 filename.txt 的前30行,请运行:

终端
head -n 30 filename.txt

您可以省略字母 n,仅使用连字符和数字,两者之间没有空格:

终端
head -30 filename.txt

两个命令产生相同的结果。

要显示除最后N行之外的所有行,请使用 -n 并传入负数。例如,要打印除最后五行之外的所有行:

终端
head -n -5 filename.txt

显示指定字节数

-c(--bytes)选项从文件开头打印指定数量的字节:

txt
head -c NUMBER filename.txt

例如,要显示 filename.txt 的前100个字节:

终端
head -c 100 filename.txt

您还可以在字节数后附加倍数后缀:

后缀倍数结果
b512head -c 2b → 1024字节
kB1000head -c 5kB → 5000字节
K1024head -c 5K → 5120字节
MB1 000 000head -c 2MB → 2 000 000字节
M1 048 576head -c 2M → 2 097 152字节

以下命令显示 filename.txt 的前5120字节(5 KiB):

终端
head -c 5K filename.txt

显示多个文件

当提供多个文件时,head 会显示每个文件的前十行。每个文件的输出前面都有一个显示文件名的标题:

终端
head filename1.txt filename2.txt
输出
==> filename1.txt <==
...filename1.txt的前10行...

==> filename2.txt <==
...filename2.txt的前10行...

您可以将其与其他选项结合使用。要显示每个文件的前20行:

终端
head -n 20 filename1.txt filename2.txt

在管道中使用 head

head 命令在管道中非常有用,可以限制其他命令的输出。将任何命令的输出通过管道传给 head,以仅查看前几行。

要显示目录中最近修改的五个文件:

终端
ls -t | head -n 5

仅显示文件的第一行,例如读取CSV的标题行:

终端
head -n 1 filename.txt

在对文件进行数值排序后显示十个最小值:

终端
sort -n filename.txt | head

使用 wc 仅统计前20行的单词数:

终端
head -n 20 filename.txt | wc -w

从 /dev/urandom 生成一个随机的24字符字符串:

终端
LC_ALL=C tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 24; echo

快速参考

如需可打印的快速参考,请参阅 head 速查表。

命令描述
head file.txt显示前10行
head -n 20 file.txt显示前20行
head -20 file.txt显示前20行(过时的简写)
head -n -5 file.txt显示除最后5行之外的所有行
head -c 100 file.txt显示前100个字节
head -c 5K file.txt显示前5120字节
head file1.txt file2.txt显示每个文件的前10行
command | head -n 20将命令输出限制为20行
head -n 1 file.txt仅显示第一行

常见问题解答

head 和 tail 有什么区别?
head 打印文件的前几行;tail 打印最后几行。使用 head 预览文件开头,使用 tail 检查最新条目,例如日志文件的末尾。

如何仅显示文件的第一行?
使用 head -n 1 filename.txt 或简写形式 head -1 filename.txt。这对于读取CSV文件的标题行或检查日志中的第一个条目非常有用。

如何显示除最后N行之外的所有行?
将负数传递给 -n。例如,head -n -10 filename.txt 会打印除最后十行之外的所有行。这在 GNU head(Linux)上有效;macOS 的 head 不支持 -n 的负值。

我可以将 head 与 grep 一起使用吗?
可以。将 grep 的输出通过管道传给 head 以限制显示的匹配行数:

终端
grep "pattern" file.txt | head -n 5