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
不需要等测试任务执行完成,再去打开日志文件。
这在定位接口超时、服务异常和自动化执行卡住等问题时非常实用。
六、综合实战:模拟一次自动化测试日志排查
前面分别介绍了四个命令,现在把它们放到一个完整场景中。
假设我们有一份自动化测试日志,需要完成以下任务:
- 查看日志开头,确认测试是否启动。
- 查看日志末尾,确认最终执行结果。
- 分页浏览日志,寻找异常。
- 实时跟踪日志,观察新产生的记录。
第一步:准备一份测试日志
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 是我建议大家重点掌握的命令。
在自动化测试工作中,很多时候我们不需要等整个任务结束才分析结果。通过实时跟踪日志,就可以观察程序执行过程,及时发现接口异常、数据库连接失败等问题。
当然,本篇还只是文件内容查看的基础。后面我们会继续学习如何从大量日志中筛选关键词、统计错误数量、定位异常记录。