5个Linux中tail命令示例
cat命令是在Linux中用于显示文件内容的最常用命令之一。
但是我们可能并不总是希望显示大文件的所有行。
tail命令在这种情况下会有所帮助。
什么是tail命令?
顾名思义,tail命令输出单个文件或者多个文件的最后部分。
默认情况下,tail命令显示输入文件的最后十行。
tail命令还用于实时读取日志文件。
tail命令的语法为:
tail [options] [files]
Linux中5个Tail命令的实际示例
让我们通过一些实际示例来学习如何在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