Ubuntu中如何使用head和tail命令查看文件首尾内容?

来源:搜索优化作者:松松建站头衔:草根站长
导读:本期聚焦于松松建站创作的《Ubuntu中如何使用head和tail命令查看文件首尾内容?》,敬请观看详情。为什么运维人员排查日志时总是离不开head和tail这两个小工具?head负责快速读取文件开头的若干行,tail则擅长盯着文件末尾的最新输出,配合-n参数可以自由控制行数,加上-f选项还能实时追踪日志变化。本文围绕Ubuntu环境,详细讲解两个命令的参数用法、组合技巧以及查看日志时的常见误区,帮助你用最简单的方式定位问题。

在Ubuntu服务器上排查问题时,我们经常需要快速了解一个文件的内容概况。比如一个几十万行的日志文件,用文本编辑器打开不仅慢,还可能拖垮终端。这时head和tail这对搭档就派上用场了:head从文件开头取内容,tail从文件末尾取内容,两个命令配合起来,基本能覆盖日常百分之八十的文件查看需求。

Ubuntu中如何使用head和tail命令查看文件首尾内容?

head命令的基本用法

head的作用是输出文件的开头部分,默认显示前10行。它的基本语法非常简单,直接跟上文件名即可。假设我们有一个nginx访问日志access.log,执行head access.log就会打印出日志的前10行,让你迅速确认文件格式和字段结构。

如果想自定义行数,使用-n参数。例如head -n 20 access.log表示显示前20行,也可以简写成head -20 access.log,两种写法效果完全一样。除此之外,head还有一个不太常用但很实用的参数-c,它按字节数而不是行数来截取内容,比如head -c 1024 data.bin会输出文件前1024个字节,处理二进制文件或者没有换行符的单行大文件时特别方便。

# 查看文件前10行(默认行为)
head /var/log/nginx/access.log

# 查看文件前50行
head -n 50 /var/log/nginx/access.log

# 按字节截取,查看文件前256字节
head -c 256 /var/log/syslog

head还支持同时传入多个文件,它会在每个文件的内容前加上文件名标题,方便区分来源。例如head -n 3 a.log b.log会分别显示两个文件的前3行,并用==>符号标注文件名。这在对比多个配置文件的开头声明时非常省事。

tail命令与实时日志追踪

tail的逻辑和head正好相反,它默认输出文件的最后10行。对于日志文件来说,最重要的信息往往在末尾,因为那是最近产生的记录,所以tail在运维场景中的出镜率比head高得多。tail -n 100 error.log可以查看最近100条错误记录,快速判断服务当前的状态。

tail最强大的功能是-f选项,即follow模式。加上这个参数后,tail不会在输出完就退出,而是持续监听文件,一旦有新内容追加进来就立刻打印到屏幕上。排查一个正在运行的服务时,打开两个终端窗口,一边重启服务,一边用tail -f盯着日志,问题原因往往一眼就能看出来。想退出追踪状态,按Ctrl+C即可中断。

# 查看文件最后30行
tail -n 30 /var/log/syslog

# 实时追踪日志输出,Ctrl+C退出
tail -f /var/log/nginx/error.log

# 同时追踪多个日志文件
tail -f /var/log/nginx/access.log /var/log/nginx/error.log

值得一提的是-F(大写)参数。日志系统经常会做轮转(logrotate),旧的日志文件被改名归档,新的文件用原名重建。普通的小写-f盯的是文件描述符,轮转之后可能就追不到了;而大写-F会自动重新打开同名文件继续追踪,生产环境建议养成用-F的习惯。另外tail -n +5这种写法表示从第5行开始显示到文件末尾,注意加号的含义,它和-n 5的结果完全不同。

组合技巧与常见误区

head和tail真正发挥威力是在与管道结合的时候。比如想查看文件的第11到20行,可以先用head取出前20行,再用tail从中取最后10行,命令写作head -n 20 file.txt | tail -n 10。这个模式在需要截取文件中间某一段内容时非常经典。再比如统计日志中某个时间段的记录、配合grep过滤后再取首尾,都是日常高频操作。

# 查看文件第101到200行的内容
head -n 200 app.log | tail -n 100

# 找出包含ERROR的记录,并只看最新5条
grep "ERROR" app.log | tail -n 5

# 配合wc统计head取出的行数
head -n 1000 app.log | wc -l

新手常犯的一个误区是混淆行数参数的方向。tail -n 10是取最后10行,而tail -n +10是从第10行开始取到结尾,多一个加号语义天差地别。另一个误区是直接用tail -f去追踪一个不存在的文件,命令会报错退出,这时可以改用tail -F或者确保文件已创建。还有一点需要注意,head和tail处理的是文本行,如果文件里混入了超长单行(比如压缩数据被误当日志查看),输出可能刷屏,此时改用-c参数按字节截取会更安全。

掌握这两个命令后,再配合grep、wc、sort等工具,就能在纯命令行环境下完成绝大多数文件内容的快速检查工作,无需依赖任何图形界面工具,这正是Ubuntu服务器管理的日常基本功。

Ubuntuhead命令tail命令修改时间:2026-09-11 02:26:26

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260911/54398.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。