Linux 中 Tail 命令的 5 个实际例子
了解 tail 命令语法以及 Linux 中 tail 命令的一些实际示例。这也将帮助您监视日志文件。
Cat 命令是 Linux 中显示文件内容最常用的命令之一。但您可能并不总是希望显示大文件的所有行。 Tail 命令在这种情况下很有帮助。
什么是尾部命令?
tail 命令,顾名思义,输出单个文件或多个文件的最后部分。默认情况下,tail 命令打印输入文件的最后十行。 tail命令还用于实时读取日志文件。
tail 命令的语法是:
tail [options] [files]
Linux 中 Tail 命令的 5 个实用示例
让我们通过一些实际例子来学习如何在 Linux 中使用 tail 命令。我将在本教程中使用此文本文件:
The Mysterious Affair at Styles
The Secret Adversary
The Murder on the Links
The Man in the Brown Suit
The Secret of Chimneys
The Murder of Roger Ackroyd
The Big Four
The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Murder on the Orient Express
Unfinished Portrait
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
您可以从我们的 GitHub 存储库下载示例文件,并在练习的同时按照教程进行操作。
如果您使用不带任何选项的 tail 命令,它将打印最后 10 行。这是 tail 命令的默认行为。
tail agatha.txt
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Murder on the Orient Express
Unfinished Portrait
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
如果文件少于十行,它将仅显示可用行。如果最后几行为空,它们仍将被视为有效行。
但您不必满足于 tail 命令的默认用法。还有更多。我们来一一看看tail命令最常见的用法。
1.使用tail命令打印最后N行
要查看最后 N 行(而不是默认的 10 行),您可以按以下方式使用 tail 命令:
tail -n N <filename>
例如,如果你想在我们的示例文件中使用 tail 命令查看最后 5 行,你可以这样使用它:
tail -n 5 agatha.txt
Murder on the Orient Express
Unfinished Portrait
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
提示:您还可以简单地使用 tail -N 而不是 tail -n N 来显示文件的最后 N 行。
2. 打印以行号N开头的所有行
如果要查看从第 N 行开始的所有行,可以在此处使用 + 选项。
tail -n +N <filename>
在我们的示例文件中,如果您想查看从第 7 行开始的所有行,可以按以下方式使用:
tail -n +7 agatha.txt
The Big Four
The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Murder on the Orient Express
Unfinished Portrait
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
3.通过tail命令使用多个文件
tail 命令允许您同时使用多个文件。所有标准 tail 命令选项都适用于多个文件。
tail -n N <file1> <file2> <file3>
所有文件的输出都会合并,默认情况下,文件名显示在以“==>”开头的行中。
例如,如果您想查看文件 sherlock.txt 和 agatha.txt 的最后三行,则如下所示:
tail -n3 sherlock.txt agatha.txt
==> sherlock.txt <==
The Adventure of the Noble Bachelor
The Adventure of the Beryl Coronet
The Adventure of the Copper Beeches
==> agatha.txt <==
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
提示:您可以使用带选项 -q 的安静模式从输出中删除文件名。
4.用tail命令实时监控文件【对日志监控非常有用】
假设您有一个文件,并向其中添加了新内容。 tail 命令允许您显示添加到文件中的所有新行。
为此,您可以使用 -f 选项。
tail -f <log-file>
该命令将首先显示文件的最后 10 行,然后在新行添加到文件时更新输出。
这广泛用于实时查看日志文件。这也许是 tail 命令最实际的用途。
提示:如果使用 -F 而不是 -f 选项,tail 命令将等待创建输入文件(如果尚不存在),然后实时显示文件的内容。
5. 将 tail 命令与管道一起使用
tail 命令可以与其他使用管道的命令结合使用。
例如,如果一个目录中有太多文件,而您只想查看最后 3 个修改的文件,则可以按以下方式使用它:
ls -ltr | tail -n3
在上面的命令中,ls -lrt 按时间倒序列出所有文件。然后tail命令进一步解析这个输出并仅显示ls命令输出的最后三行,因此我们得到了最后三个修改文件的列表。
额外提示:显示带有行号的 tail 命令输出
行号对于理解和分析输出有很大帮助。假设您显示了文件的最后 20 行,但您还想查看它们的行号,以便可以看到文件中的总行数。
不幸的是,没有内置选项可以用数字显示 tail 命令输出。
但这并不意味着您不能使用 tail 命令显示行号。为此,您可以使用管道的力量。您刚刚在上一节中看到了 tail 命令可以与管道一起使用。为什么不在这里使用它。
nl 是用行号显示文件内容的方法。如果使用管道将其与 tail 命令结合使用,则可以显示带有行号的 tail 命令的输出。
nl <filename> | tail -3
我希望 tail 命令示例对您有所帮助。我也建议阅读有关 head 命令的内容。如果您有任何建议或疑问,请在下面的评论部分分享。