人人都会AI编程

8.4 文件查看:cat、more、less、head、tail 分页与实时查看

更新时间:2026-07-12

在日常使用 Linux 时,最频繁的操作之一就是查看文件内容——无论是读取配置文件、检查日志还是预览数据。系统提供了一组看似简单却各有专长的命令行工具,能应对从小文件快速输出到大文件分页浏览、从文件开头预览到末尾实时跟踪等各种场景。掌握它们,能让你在操作效率上产生质的提升。

1. cat —— 连接并输出整个文件

cat 的名字来源于“concatenate”(连接),它最基本的功能是将文件内容一次性发送到终端。

cat /etc/hostname       # 显示主机名
cat file1.txt file2.txt # 按顺序显示多个文件内容

适用场景:文件较短、需要一眼看完,或者要将内容通过管道传给其他命令(如 cat config.yaml | grep port)。不适合直接查看几千行以上的文件,否则屏幕会急速滚动,难以阅读。

常用参数:

  • -n:给所有行加上行号,方便定位。
  cat -n /etc/ssh/sshd_config | head
  

2. more —— 简单的“一页一页”观看

more 是早期的分页查看器,会把文件内容按屏幕高度分屏显示,停留等待用户操作。按 空格键 翻到下一屏,按 回车键 下滚一行,按 q 退出。它只能前进,不能后退。

more /var/log/dpkg.log

局限:不支持向上回滚,搜索功能也有限。在今天的 Linux 中,more 基本上已经被更强大的 less 取代,但它在一些最小化环境里仍然存在。

3. less —— 强大的双向分页器

lessmore 的增强版,名字来自“less is more”的幽默,是日常分页阅读的绝对主力。它不仅允许你用 上下箭头PageUp/PageDown 自由翻页,还内置了强大的搜索功能。

核心操作:

  • 向下翻页:空格键或 PageDown
  • 向上翻页b 键或 PageUp
  • 向下搜索:输入 /关键词 然后回车,按 n 查找下一个,N 查找上一个
  • 向上搜索:输入 ?关键词 然后回车,同样用 n/N 跳转
  • 跳到文件尾G(大写)
  • 跳到文件头g(小写)
  • 实时跟踪:按 F(大写)后进入类似 tail -f 模式,新追加的内容会实时显示;按 Ctrl+C 退出跟踪回到分页状态
  • 退出q

常用参数

  • -N:显示行号
  • -i:搜索时忽略大小写
  • -s:将连续空行压缩为一行

日常查看日志、大文件、手册页(man 其实是用 less 作为分页器)时,less 几乎是唯一推荐的工具。例如:

less /var/log/syslog
# 打开后输入 /error 并回车,立即定位到所有含 "error" 的行

4. head —— 只看开头若干行

head 默认输出文件的前 10 行,非常适合用来快速了解文件格式或查看最新日志的开始部分。

head access.log          # 显示前10行
head -n 20 access.log    # 显示前20行
head -c 100 example.txt  # 显示前100个字节

当你收到一个未知的 CSV 文件,用 head -3 data.csv 看一眼列名和几行数据,效率远高于用编辑器打开整个文件。

5. tail —— 显示尾部,并能实时跟踪

tail 默认输出文件的最后 10 行,在排查最新日志时极为常用。

tail /var/log/nginx/error.log          # 最后10行
tail -n 50 /var/log/nginx/error.log    # 最后50行

最重要的功能:-f(follow,持续跟踪)
tail -f 不会在输出末尾退出,而是保持运行,并在文件有新内容追加时立即刷新显示,这是实时监控日志的标准做法。

tail -f /var/log/apache2/access.log    # 不断输出新产生的访问记录

当使用日志轮转(logrotate)时,旧文件被重命名,新日志写入同名新文件,-f 会因跟踪的文件 inode 变化而停止。-F 参数(注意大写)解决了这个问题,它会持续尝试重新打开同路径文件,即使文件被删除、重建或重命名,也能自动跟踪新文件,非常适合长期运行的监控脚本。

实用技巧:

  • tail -f /var/log/syslog | grep --line-buffered "ERROR":实时过滤包含 ERROR 的行并显示。
  • Ctrl+C 中断 tail -f

6. 选择总结

| 场景 | 推荐命令 | 示例 |
|------|---------|------|
| 短文件(几十行)或需要通过管道传给其他程序 | cat | cat /proc/cpuinfo |
| 浏览大文件、查阅 man 手册 | less | less production.log |
| 快速预览文件头部结构 | head | head -5 download.csv |
| 检查最新的日志记录 | tail | tail -30 /var/log/messages |
| 实时监控日志输出 | tail -ftail -F | tail -f /var/log/auth.log |

这些命令虽然基础,但构成了 Linux 文件系统交互的核心。熟练使用它们,意味着你无需频繁打开文本编辑器,就能迅速了解和诊断系统状态。