"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.csv或head -20 report.csv,显示report.csv的前20行数据,便于查看表格文件的表头和部分内容。示例3:查看多个文件的前几行 执行
head -n 5 file1.txt file2.txt,分别显示file1.txt和file2.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读取指定行数后会终止上游命令,避免不必要的资源消耗。