顾名思义,tail 命令输出单个或多个文件的最后部分内容。默认情况下,tail 命令将会打印文件的最后 10 行内容。在实际应用中,我们经常用它来实时读取日志文件。
tail 命令的语法结构如下所示:
作为演示,我们使用如下文件内容来介绍 tail 命令:
刚刚我们提到过,tail 命令默认会显示文件的最后 10 行内容,但是当文件内容总共不足 10 行时,会显示整个文件的内容。当然大多数情况下,我们不使用它的默认行为,而是根据实际情况来选择应用。接下来我们根据例子来逐个介绍下。
1,使用 tail 命令打印文件的最后 x 行内容
打印文件的最后 x 行内容(而不是默认的最后 10 行),可参考如下语法结构:
比如,查看文件的最后 5 行内容:
小提示:你也可以直接使用 tail -x 而不是 tail -n x 来显示最后 x 行内容。
2,打印从 x 行开始往后的所有内容
如果想要打印从 x 行开始往后的所有内容,可使用 +x 选项,如下所示:
比如,我们的示例文档,想要打印从第 7 行开始的所有内容,如下:
3,使用 tail 命令同时查看多个文件
使用 tail 命令可以同时查看多个文件。其语法结构如下所示:
与 head 命令类似,查看的各个文件名会显示在输出中。比如,我们想要查看 tiap.txt 和 sherlock.txt 的最后 3 行,如下所示:
提示,使用 -q 选项可以在输出中不显示文件名信息。
4,使用 tail 命令实时监视文件
假设我们有一个文件,其内容会实时增加(比如日志文件),tail 命令可以帮助我们实时查看新添加到文件中的内容。这个功能可通过使用 -f 选项来实现:
上述命令会首先显示文件的最后 10 行内容,然后当文件有新的内容增加时,也会将新的内容实时输出到终端中。这个功能被广泛用于读取日志文件,这也可能是 tail 命令最常见的用法。
提示:如果使用 -F 选项代替 -f 选项,tail 命令会等待输入文件创建(如果不存在)后,在实时显示文件的内容。
5,在管道重定向中使用 tail 命令
tail 命令还可以结合管道重定向来使用。比如,假如在一个目录中有许多文件,我们只想查看最后 3 个修改过的文件,那么可以按如下方式:
上述命令中,ls -lrt 按时间顺序倒叙列出所有文件,然后通过管道重定向将输出给到 tail 命令,tail 命令解析这个输出,只显示其最后的 3 行,这 3 行内容就是我们所需要的最近 3 个修改的文件列表。
6,在 tail 命令的输出中显示行号
我们在查看某个文档的时候,如果文档中可以显示行号,那么对于我们来说是非常友好的,比如我们想要查看当前正在阅读的在多少行,整个文件有多少行内容,等等。
不过,tail 命令并没有内置的显示行号的功能。不过我们可以通过其他方式来实现这一功能,那就是通过使用 nl 命令以及管道重定向结合 tail 命令来实现。
nl 命令可以在文件内容中显示行号,将其输出通过管道重定向到 tail 命令中,就可以满足我们的需求。如下所示: