本页内容

  • Linux head 命令
  • Q1. 如何在终端(stdout)上打印文件的前 10 行?
  • Q2. 如何调整 head 打印的行数?
  • Q3. 如何将输出限制为指定的字节数?
  • Q4. 如何让 head 在输出中打印文件名?
  • Q5. 如何让 NUL 作为行分隔符,而非换行符?
  • 结论

当你在 Linux 命令行上工作时,有时想快速查看文件的前几行。例如,如果日志文件在不断更新,你可能每次都想看日志文件的前 10 行。尽管用编辑器(如 vim)查看文件始终是可行的,但有一个名为 head 的命令行工具,可让你轻松查看文件的前几行。

在本文中,我们将通过一些易于理解的示例,讲解 head 命令的基础知识。请注意,此处提到的所有步骤/指令均已在 Ubuntu 22.04 上测试。

Linux head 命令

正如开头所述,head 命令让用户查看文件的开头部分。其语法如下:

head [OPTION]... [FILE]...

以下是该命令的 man 手册页对其的描述:

Print the  first  10 lines of each FILE to standard output. With more than one FILE, precede each 
with a header giving the file name.

以下问答形式的示例,能让你更好地理解该工具的使用方式:

Q1. 如何在终端(stdout)上打印文件的前 10 行?

使用 head 非常简单——事实上,这正是该工具的默认行为。

head [file-name]

以下截图展示了该命令的实际运行效果:

Linux head 命令入门:5 个实用示例详解

Q2. 如何调整 head 打印的行数?

虽然 10 是 head 命令默认打印的行数,但你可以根据需要修改这个数字。命令行选项 -n 可以让你做到这一点。

head -n [N] [File-name]

例如,如果你只想打印前 5 行,可以按以下方式告诉该工具:

head -n 5 file1.txt

Linux head 命令入门:5 个实用示例详解

Q3. 如何将输出限制为指定的字节数?

除了行数,你还可以将 head 命令的输出限制为特定的字节数。这可以使用 -c 命令行选项来实现。

head -c [N] [File-name]

例如,如果你想让 head 只显示前 25 个字节,可以按如下方式执行:

head -c 25 file1.txt

Linux head 命令入门:5 个实用示例详解

如你所见,该工具在输出中只显示了前 25 个字节。

请注意,[N] 可以带有倍数后缀:b 为 512,kB 为 1000,K 为 1024,MB 为 1000*1000,M 为 1024*1024,GB 为 1000*1000*1000,G 为 1024*1024*1024,依此类推,适用于 T、P、E、Z、Y。

Q4. 如何让 head 在输出中打印文件名?

如果出于某种原因,你希望 head 命令在输出中也打印文件名,可以使用 -v 命令行选项来实现。

head -v [file-name]

下面是一个示例:

Linux head 命令入门:5 个实用示例详解

如你所见,输出中显示了文件名 'file 1'。

Q5. 如何让 NUL 作为行分隔符,而非换行符?

默认情况下,head 命令的输出以换行符作为分隔符。但也支持使用 NUL 作为分隔符的选项。选项 -z 或 --zero-terminated 可以让你做到这一点。

head -z [file-name]

结论

想必大多数人都同意,head 是一个易于理解和使用的简单命令,意味着它的学习曲线很低。它提供的功能(就命令行选项而言)也很有限,而我们已经几乎涵盖全部。所以不妨试试这些选项,完成后再查阅该命令的 man 手册页以了解更多信息。