【Linux 命令实战(04):文件内容查看,掌握 cat、less、head、tail】

TL;DR

系列方向: 从 Linux 基础命令开始,逐步掌握文件管理、权限控制、进程管理、网络排查、日志分析和 Shell 自动化,通过真实案例提升 Linux 工程实践能力。

本篇重点: 掌握 cat、less、head、tail 四个文件内容查看命令,学会查看完整文件、分页浏览、读取文件开头和末尾,并使用 tail -f 实时跟踪测试日志,为后续日志分析和故障排查打基础。


一、为什么要学习文件内容查看?

在 Linux 服务器上,文件操作只是第一步。真正遇到问题时,我们更经常做的是打开文件、查看内容、寻找异常信息。

例如:

  • 自动化测试执行失败,需要查看测试日志。
  • 服务启动异常,需要检查启动日志。
  • 配置文件修改后,需要确认配置内容。
  • 程序运行过程中,需要实时观察日志有没有继续输出。
  • 测试任务执行完成,需要查看最后几行结果。

这些操作不一定需要打开编辑器,使用 Linux 自带的命令就能完成。

本篇先掌握四个命令:

命令 主要用途 典型场景
cat 查看文件内容 查看短配置文件
less 分页查看文件 浏览较大的日志
head 查看文件开头 检查日志头部、配置内容
tail 查看文件末尾 查看最新日志、实时跟踪

先准备一个练习目录:

bash 复制代码
mkdir -p ~/linux-practice/day04
cd ~/linux-practice/day04

创建一个测试日志文件:

bash 复制代码
cat > test.log <<'EOF'
2026-11-06 09:00:01 INFO  Test started
2026-11-06 09:00:02 INFO  Loading test configuration
2026-11-06 09:00:03 INFO  Connecting to test server
2026-11-06 09:00:04 INFO  Login test passed
2026-11-06 09:00:05 ERROR Order API returned 500
2026-11-06 09:00:06 INFO  Starting order test
2026-11-06 09:00:07 ERROR Database connection timeout
2026-11-06 09:00:08 INFO  Test execution finished
EOF

后面的命令都围绕这个文件进行练习。

二、cat:查看文件内容

1. 最基本的用法

cat 是最简单的文件查看命令。

bash 复制代码
cat test.log

执行后会直接输出文件的全部内容。

适合查看内容比较少的文件,例如:

  • 测试环境配置文件
  • 简单的 Shell 脚本
  • 小型日志文件
  • 程序生成的文本结果

但如果文件特别大,就不建议直接使用 cat。

例如一个几百 MB 的日志文件,直接输出可能会刷屏,不方便定位问题。

2. 使用 -n 显示行号

bash 复制代码
cat -n test.log

输出示例:

text 复制代码
     1  2026-11-06 09:00:01 INFO  Test started
     2  2026-11-06 09:00:02 INFO  Loading test configuration
     3  2026-11-06 09:00:03 INFO  Connecting to test server
     4  2026-11-06 09:00:04 INFO  Login test passed
     5  2026-11-06 09:00:05 ERROR Order API returned 500
     6  2026-11-06 09:00:06 INFO  Starting order test
     7  2026-11-06 09:00:07 ERROR Database connection timeout
     8  2026-11-06 09:00:08 INFO  Test execution finished

这个参数在排查问题时比较有用。

比如同事反馈日志第 7 行出现异常,我们就可以直接定位对应内容。

3. 使用 -b 给非空行编号

bash 复制代码
cat -b test.log

-b 只给非空行编号,而 -n 会给所有行编号。

可以自己创建一个带空行的文件进行对比:

bash 复制代码
cat > demo.txt <<'EOF'
第一行

第三行
第四行
EOF

分别执行:

bash 复制代码
cat -n demo.txt
cat -b demo.txt

两者的编号方式就会有所不同。

4. cat 的实际使用建议

我通常把 cat 用在两类场景:

第一类:查看小文件。

bash 复制代码
cat config/test.conf

第二类:快速确认文件内容。

bash 复制代码
cat result.txt

如果需要阅读长日志,建议使用 less 或 tail,不要让终端一次性输出大量内容。


三、less:分页查看大文件

如果说 cat 适合快速查看,那么 less 更适合阅读较大的文本文件。

例如:

bash 复制代码
less test.log

执行后会进入一个分页浏览界面,不会一次性把所有内容刷到终端上。

1. less 常用操作

进入 less 后,可以使用键盘进行浏览。

按键 作用
空格 向下翻一页
b 向上翻一页
Enter 向下移动一行
↑ / ↓ 上下移动一行
g 跳到文件开头
G 跳到文件末尾
/关键词 向下搜索关键词
?关键词 向上搜索关键词
n 查找下一个匹配项
N 查找上一个匹配项
q 退出

这些操作建议实际执行一遍,比单纯记忆参数更容易掌握。

2. 在 less 中搜索错误信息

假设测试日志有几万行,我们只关心有没有 ERROR。

执行:

bash 复制代码
less test.log

进入页面后输入:

text 复制代码
/ERROR

按 Enter 就能定位到匹配内容。

如果存在多个匹配结果,可以按:

text 复制代码
n

继续向下查找。

按:

text 复制代码
N

则可以返回上一个匹配结果。

3. 直接跳到文件末尾

查看日志时,我们往往更关心最新的内容。

可以执行:

bash 复制代码
less +G test.log

这样进入文件后会直接定位到末尾。

如果希望退出后继续执行其他命令,按 q 即可。

4. less 为什么适合查看大日志?

假设有一个文件:

text 复制代码
application.log

里面包含几十万行记录。

使用:

bash 复制代码
cat application.log

可能会产生大量终端输出。

而使用:

bash 复制代码
less application.log

就可以按页浏览,需要时再搜索关键词。

实际工作中,查看较大的日志文件,我更推荐优先使用 less。


四、head:查看文件开头

head 用来查看文件的前几行。

默认情况下,它会显示文件前 10 行。

1. 查看前 10 行

bash 复制代码
head test.log

2. 指定查看行数

例如,只查看前 3 行:

bash 复制代码
head -n 3 test.log

输出:

text 复制代码
2026-11-06 09:00:01 INFO  Test started
2026-11-06 09:00:02 INFO  Loading test configuration
2026-11-06 09:00:03 INFO  Connecting to test server

也可以写成:

bash 复制代码
head -3 test.log

两种写法都可以。

3. 查看文件前几个字节

head 还可以通过 -c 指定读取的字节数。

bash 复制代码
head -c 50 test.log

这表示输出文件开头的 50 个字节。

注意,字节和字符不是一回事。对于 UTF-8 中文文本,一个汉字通常占用 3 个字节,因此按字节截取时可能截断字符。

4. 实际场景:检查日志格式

假设自动化测试平台每天都会生成一份日志:

text 复制代码
api-test-2026-11-06.log

我们想确认日志是否正常生成,以及开头有没有测试任务初始化信息。

可以执行:

bash 复制代码
head -n 5 api-test-2026-11-06.log

如果开头是:

text 复制代码
2026-11-06 09:00:01 INFO  Test started
2026-11-06 09:00:02 INFO  Loading configuration
2026-11-06 09:00:03 INFO  Initializing test environment

就能快速确认日志开头的内容。

这类检查在定位测试任务是否正常启动时很有帮助。


五、tail:查看文件末尾

与 head 相反,tail 默认查看文件最后 10 行。

在实际工作中,它的使用频率非常高,尤其是排查测试和服务问题时。

1. 查看最后 10 行

bash 复制代码
tail test.log

2. 指定查看行数

例如,只查看最后 3 行:

bash 复制代码
tail -n 3 test.log

输出:

text 复制代码
2026-11-06 09:00:06 INFO  Starting order test
2026-11-06 09:00:07 ERROR Database connection timeout
2026-11-06 09:00:08 INFO  Test execution finished

如果测试日志有很多行,我们可以先看末尾,判断任务最终执行到了哪一步。

3. 使用 -f 实时跟踪日志

这是本篇最值得掌握的用法。

bash 复制代码
tail -f test.log

执行后,终端会持续显示文件末尾新增的内容。

例如,在另一个终端中执行:

bash 复制代码
echo "2026-11-06 09:05:00 INFO  New test case started" >> test.log

回到第一个终端,就能看到新写入的日志。

这就是实时日志跟踪。

退出实时跟踪:

text 复制代码
Ctrl + C

4. -f 和 -F 有什么区别?

两者都用于跟踪文件变化,但行为有所不同。

参数 行为
tail -f 持续跟踪当前打开的文件
tail -F 按文件名跟踪,文件被替换或重新创建后会尝试重新打开

为什么需要 -F?

因为有些服务会定期进行日志轮转。

例如:

text 复制代码
application.log
application.log.1
application.log.2

日志轮转时,原来的日志文件可能被重命名,新日志文件重新创建。

这种情况下:

bash 复制代码
tail -f application.log

可能仍然跟踪原来的文件对象。

而:

bash 复制代码
tail -F application.log

会尝试重新打开这个文件名对应的新文件。

因此,面对可能发生日志轮转的服务日志,可以优先考虑:

bash 复制代码
tail -F application.log

5. 实际场景:观察自动化测试执行过程

假设自动化测试任务已经启动,日志文件是:

text 复制代码
api-test.log

我们希望实时观察测试过程:

bash 复制代码
tail -f api-test.log

当测试程序写入新日志时,就可以立即看到:

text 复制代码
2026-11-06 09:10:01 INFO  Test started
2026-11-06 09:10:02 INFO  Login test passed
2026-11-06 09:10:03 INFO  Query user information
2026-11-06 09:10:04 ERROR Order API returned 500

不需要等测试任务执行完成,再去打开日志文件。

这在定位接口超时、服务异常和自动化执行卡住等问题时非常实用。


六、综合实战:模拟一次自动化测试日志排查

前面分别介绍了四个命令,现在把它们放到一个完整场景中。

假设我们有一份自动化测试日志,需要完成以下任务:

  1. 查看日志开头,确认测试是否启动。
  2. 查看日志末尾,确认最终执行结果。
  3. 分页浏览日志,寻找异常。
  4. 实时跟踪日志,观察新产生的记录。

第一步:准备一份测试日志

bash 复制代码
cat > api-test.log <<'EOF'
2026-11-06 09:00:01 INFO  Test started
2026-11-06 09:00:02 INFO  Loading configuration
2026-11-06 09:00:03 INFO  Connecting to server
2026-11-06 09:00:04 INFO  Login test passed
2026-11-06 09:00:05 INFO  Query user passed
2026-11-06 09:00:06 ERROR Order API returned 500
2026-11-06 09:00:07 INFO  Retry order request
2026-11-06 09:00:08 ERROR Database connection timeout
2026-11-06 09:00:09 INFO  Test execution finished
EOF

第二步:查看日志开头

bash 复制代码
head -n 3 api-test.log

确认测试任务是否正常启动。

第三步:查看日志末尾

bash 复制代码
tail -n 3 api-test.log

确认测试执行到了什么位置。

第四步:分页浏览日志

bash 复制代码
less api-test.log

进入后输入:

text 复制代码
/ERROR

定位错误记录。

第五步:查看带行号的完整日志

bash 复制代码
cat -n api-test.log

这样可以快速确认错误所在的行号。

第六步:实时跟踪日志

bash 复制代码
tail -f api-test.log

再打开另一个终端,执行:

bash 复制代码
echo "2026-11-06 09:15:00 INFO  New test case started" >> api-test.log

观察第一个终端是否出现新记录。

至此,我们就完成了一次简单的日志查看流程。


七、四个命令怎么选择?

实际工作中,不需要每次都纠结使用哪个命令,可以根据需求选择。

需求 推荐命令
查看小型配置文件 cat config.conf
查看文件并显示行号 cat -n test.log
浏览较大的日志文件 less application.log
搜索文件中的内容 less application.log,进入后使用 /关键词
查看文件开头 head -n 10 test.log
查看最新日志 tail -n 20 test.log
实时观察日志 tail -f test.log
日志可能发生轮转 tail -F application.log

这里再补充一个实际建议:

不要把所有日志查看问题都交给 cat。

如果只是看几行,使用 head 或 tail 更直接;如果需要阅读大文件,使用 less 更合适;如果需要观察程序运行过程,使用 tail -f。

命令选对了,排查效率会明显提高。


八、动手练习

建议在自己的 Linux 环境中完成下面几个练习。

练习一:查看文件内容

bash 复制代码
cat -n api-test.log

要求:显示完整日志,并带上行号。

练习二:分页查看

bash 复制代码
less api-test.log

要求:进入分页界面,搜索 ERROR,然后退出。

练习三:查看开头和末尾

bash 复制代码
head -n 2 api-test.log
tail -n 2 api-test.log

要求:分别查看前两行和最后两行。

练习四:实时跟踪

终端一:

bash 复制代码
tail -f api-test.log

终端二:

bash 复制代码
echo "2026-11-06 10:00:00 INFO  Test completed" >> api-test.log

要求:观察终端一是否实时出现新增内容。

练习五:自己模拟一次异常

执行:

bash 复制代码
echo "2026-11-06 10:05:00 ERROR Login failed" >> api-test.log

然后使用 tail 或 less 找到这条错误记录。


九、总结

本篇学习了四个文件内容查看命令:

  • cat:快速查看文件内容。
  • less:分页浏览文件,支持搜索。
  • head:查看文件开头。
  • tail:查看文件末尾,支持实时跟踪。

其中,tail -f 是我建议大家重点掌握的命令。

在自动化测试工作中,很多时候我们不需要等整个任务结束才分析结果。通过实时跟踪日志,就可以观察程序执行过程,及时发现接口异常、数据库连接失败等问题。

当然,本篇还只是文件内容查看的基础。后面我们会继续学习如何从大量日志中筛选关键词、统计错误数量、定位异常记录。

相关推荐
每月一号准时摆烂33 分钟前
服务器运维笔记(一)——使用shell编写实时查看BMC功率的脚本
运维·服务器·笔记
CodeYp20191 小时前
第13讲:HTTPS 协议原理
linux·https
一条破秋裤2 小时前
【1112】Linux中断【整理】
linux·运维·服务器
CodeYp20193 小时前
第14讲:传输层协议 UDP
linux·udp
北京迅为3 小时前
案例分享 | RK182X算力卡:多路视频VLM监控,四路画面AI同时看懂,一句人话说清现场
linux·人工智能·嵌入式·rk3588·算力卡·rk182x
lzx_00215 小时前
Linux 进程(三) 从进程状态到僵尸进程、孤儿进程
linux·服务器
FlightYe17 小时前
音视频修炼之容器与协议(四):RTSP详解
android·linux·ffmpeg·音视频·dash
刘马想放假18 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
kloc19 小时前
聊天室项目入口网关子服务的实现
linux·c++