在处理大型文件或较长的命令输出时,您很少需要一次性查看所有内容。通常您只想快速查看文件的开头、日志的前几项或CSV的标题行。head 命令正是为此而设计:它会将一个或多个文件或通过管道传入的数据的前几行(默认10行)打印到标准输出。
本指南将说明如何使用 Linux head 命令预览文件并控制打印的行数,并提供最常用选项的实际示例。
head 命令语法
head 命令的语法为:
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)选项指定要显示的行数:
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)选项从文件开头打印指定数量的字节:
head -c NUMBER filename.txt例如,要显示 filename.txt 的前100个字节:
head -c 100 filename.txt您还可以在字节数后附加倍数后缀:
| 后缀 | 倍数 | 结果 |
|---|---|---|
b | 512 | head -c 2b → 1024字节 |
kB | 1000 | head -c 5kB → 5000字节 |
K | 1024 | head -c 5K → 5120字节 |
MB | 1 000 000 | head -c 2MB → 2 000 000字节 |
M | 1 048 576 | head -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