200字
head
2025-10-10
2025-10-10

"Head" 的字面意思,是一个用于查看文件开头部分内容的命令行工具。

该命令可以快速获取文件的前几行内容,默认显示前10行,常用于预览文件大致内容、查看日志头部信息或提取文件开头数据。

 head [选项] <文件1> <文件2> ...

常用选项

  • -n <数字>:"lines",指定显示的行数,例如 head -n 5 document.txt 显示 document.txt 的前5行。

    • 简化写法:-<数字> 等价于 -n <数字>,例如 head -3 log.txt 等同于 head -n 3 log.txt

  • -c <数字>:"bytes",指定显示的字节数,例如 head -c 100 data.bin 显示 data.bin 的前100个字节(适合二进制文件或精确字节截取)。

  • -q:"quiet" 或 "suppress headers",静默模式,当查看多个文件时不显示文件名头部,例如 head -q -n 2 file1.txt file2.txt 直接输出两个文件的前2行,不额外显示文件名。

  • -v:"verbose",详细模式,强制显示文件名头部,即使只查看单个文件,例如 head -v note.txt 会先输出 ==> note.txt <== 再显示内容,便于区分多个文件的输出。

  • -z:"zero-terminated",以空字符(\0)作为行分隔符,而非默认的换行符,用于处理包含特殊换行符的文件,例如 head -z -n 1 file_with_nulls.txt 按空字符分割取第一部分。

参考示例

  • 示例1:查看文件默认前10行 执行 head access.log,显示 access.log 的前10行内容,适合快速预览日志文件的起始部分。

  • 示例2:指定显示前N行 执行 head -n 20 report.csvhead -20 report.csv,显示 report.csv 的前20行数据,便于查看表格文件的表头和部分内容。

  • 示例3:查看多个文件的前几行 执行 head -n 5 file1.txt file2.txt,分别显示 file1.txtfile2.txt 的前5行,且每个文件内容前会标注文件名(如 ==> file1.txt <==),适合对比多个文件的开头差异。

  • 示例4:静默模式查看多个文件 执行 head -q -n 3 *.conf,显示当前目录下所有 .conf 文件的前3行,不显示文件名头部,适合批量提取多个配置文件的开头信息并合并输出。

  • 示例5:按字节数截取文件开头 执行 head -c 1024 image.jpg > thumbnail.jpg,截取 image.jpg 的前1024字节并保存为 thumbnail.jpg(仅示例,实际图片截取需用专业工具),适合处理二进制文件或精确截取数据。

  • 示例6:在管道中配合其他命令使用 执行 cat large_file.txt | head -n 100 | grep "error",先通过 cat 读取大文件,用 head 取前100行,再用 grep 筛选包含 "error" 的行,适合快速定位大文件开头的关键信息。

  • 示例7:显示文件头部并标注文件名(单个文件) 执行 head -v config.ini,输出格式为:

     ==> config.ini <==
     [database]
     host = localhost
     port = 3306

    适合在脚本输出中明确区分不同文件的内容来源。

  • 示例8:处理特殊换行符的文件 执行 head -z -n 1 data.txt,对于用空字符分隔内容的文件(如 find ... -print0 的输出),可正确截取第一部分内容,避免因换行符异常导致的内容错乱。

注意:如果文件行数少于指定的 -n 数值,head 会显示文件全部内容而不会报错;对于管道输入(如 command | head),head 读取指定行数后会终止上游命令,避免不必要的资源消耗。

评论