使用 Head、Tail 和 Cat 查看文件

LinuxBeginner
立即练习

简介

欢迎进入 Linux 文件查看的世界。在上一个模块中,你学习了如何组织文件。现在,你将打开文件并阅读其内容。

在本实验中,你将学习查看文件内容的 3 种基本方法:

  1. **cat**:一次读取整个文件。适合查看较小的笔记文件。
  2. **head**:只读取文件开头的内容。适合快速了解文件的主题。
  3. **tail**:只读取文件末尾的内容。适合查看日志文件的最新更新。

你还将学习一个特殊技巧,用于实时监视文件的更新。

这是学习 Linux 基础知识的重要一步。在前面的模块中,你学习了文件的组织方式。现在,你将开始与文件内容交互。在实际系统中,许多管理工作本质上都是:以正确的方式读取正确的文本文件。

查看完整文件(cat)

cat 命令的标准用途是「显示这个文件中的全部内容」。

它最适合较小的文件。如果对超大文件使用它,文本会快速滚过屏幕,难以阅读。

cat 是 concatenate 的缩写,因为该命令最初用于连接并输出文件内容。许多初学者首先把它当作文件查看工具使用,但从历史上看,它属于更广泛的文本处理方式。

我们准备了一个名为 sample.txt 的小文件。

首先,进入项目目录:

cd ~/project

现在,将文件内容输出到屏幕:

cat sample.txt

你会立即看到文件的全部内容:

Line 1: This is a sample file.
Line 2: It is used to demonstrate the cat command.
Line 3: The cat command displays the full content.
Line 4: This file is short enough to read easily.
Line 5: End of the sample file.

对于较大的文件,我们需要使用更合适的工具。

查看文件开头(head)

有时,你只需要查看标题或开头几行。这时可以使用 head。它会显示文件的「头部」,也就是文件开头的内容。

默认情况下,head 显示前 10 行。

这个默认设置很有用,因为文件开头通常包含上下文信息,例如标头、注释、列名或前几条记录。换句话说,head 是一个用于快速抽样查看文件内容的工具。

查看 /etc/passwd 文件。它是一个包含用户信息的较长系统文件。

head /etc/passwd

你应该只能看到文件开头的 10 行。

自定义查看范围

如果只想查看开头 5 行,该怎么办?可以使用 -n(number,数量)选项告诉 head 要显示多少行。

head -n 5 /etc/passwd

这样可以快速抽样查看文件,而不必读取整个文件。

查看文件末尾(tail)

如果说 head 用于查看开头,那么 tail 就用于查看末尾。tail 命令会显示文件底部的几行内容。

在 Linux 中,日志会按顺序写入。「最新」的记录始终位于文件末尾。因此,如果问题刚刚发生,错误消息通常会出现在文件末尾。

这就是为什么 tail 与运维工作密切相关。日志通常通过追加新行不断增长,因此文件底部最有可能解释当前问题。

查看系统日志 /var/log/syslog:

tail /var/log/syslog

你会看到最后 10 条记录。

和 head 一样,你也可以限制显示的行数。要查看最后 5 个事件:

tail -n 5 /var/log/syslog

这是系统管理员最常用的基础命令之一。服务器崩溃时,他们通常首先输入的就是 tail。

实时监控日志(tail -f)

静态文件比较乏味,实时数据则更加有趣。tail 命令提供了 -f 选项,该选项表示 follow(跟随)。

使用 -f 时,tail 会等待文件发生变化。如果程序向该文件写入新行,tail 会立即捕获并显示这行内容。这就像观看实时新闻滚动字幕。

这是终端开始体现交互性的场景之一。你不再是读取一个已经完成的文件,而是在程序生成事件时,观察这些事件实时出现。

下面在两个终端中进行操作。

终端 1(监控端)

开始监控日志文件:

tail -f ~/project/app.log

命令行光标会停在那里。终端看起来像是「卡住」了,但实际上它正在等待文件更新。

终端 2(操作端)

打开一个第二个终端(点击标签页旁边的 + 按钮)。向日志文件写入一条记录:

echo "New log entry at $(date)" >> ~/project/app.log

快速切换回终端 1。你会看到这条消息出现!

回到终端 2,再写入几条记录:

echo "Another event happened" >> ~/project/app.log
echo "System is running smoothly" >> ~/project/app.log

在终端 2 中按下 Enter 键后,文本会立即出现在终端 1 中。这就是工程师实时监控服务器的方式。

操作完成后,回到终端 1。按下 Ctrl+C 停止跟随文件,并返回命令行提示符。

总结

恭喜!你现在已经掌握了在 Linux 中检查文件的基础工具。

  • **cat**:读取整个文件。适合较小的文件。
  • **head**:读取文件开头。适合快速检查。
  • **tail**:读取文件末尾。适合查看日志。
  • **tail -f**:实时监控文件。

使用这些命令,你可以回答这个问题:「这个文件中有什么内容?」