📜  Linux 中的 Tail 命令及示例

📅  最后修改于: 2022-05-13 01:57:28.524000             🧑  作者: Mango

Linux 中的 Tail 命令及示例

它是head命令的补充。tail命令,顾名思义,打印给定输入的最后N个数据。默认情况下,它打印指定文件的最后 10 行。如果提供了多个文件名,则每个文件中的数据都以文件名开头。

句法:

tail [OPTION]... [FILE]...

让我们考虑两个名称为state.txtcapital.txt的文件分别包含印度各州和首都的所有名称。

$ cat state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu and Kashmir
Jharkhand
Karnataka
Kerala
Madhya Pradesh
Maharashtra
Manipur
Meghalaya
Mizoram
Nagaland
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

如果没有任何选项,它只显示指定文件的最后 10 行。
例子:

$ tail state.txt
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

选项:

1. -n num:打印最后 'num' 行而不是最后 10 行。 num必须在命令中指定,否则会显示错误。此命令也可以写成不使用符号“n”字符,但必须使用“-”符号。

$ tail -n 3 state.txt
Uttar Pradesh
Uttarakhand
West Bengal
       OR
$ tail -3 state.txt
Uttar Pradesh
Uttarakhand
West Bengal

Tail 命令还带有一个“+”选项,该选项在 head 命令中不存在。使用此选项,tail 命令从文件的指定行号开始打印数据,而不是结束。对于命令: tail +n file_name ,数据将从第 'n' 行开始打印,直到指定文件的末尾。

$ tail +25 state.txt
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

2. -c num:打印指定文件的最后“num”个字节。换行计为单个字符,因此如果 tail 打印出换行符,它将计为一个字节。在此选项中,必须写入-c后跟正数或负数,具体取决于要求。通过+num ,它显示从指定文件的开头跳过num个字节后的所有数据,通过-num ,它显示指定文件的最后num个字节。
注意:num之前没有正号或负号,命令将显示指定文件中的最后num个字节。

With negative num
$ tail -c -6 state.txt
Bengal
        OR
$ tail -c 6 state.txt
Bengal

With positive num
$ tail -c +263 state.txt
Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand

3. -q:如果给出超过 1 个文件,则使用它。由于此命令,来自每个文件的数据不以文件名开头。

Without using -q option
$ tail state.txt capital.txt
  state.txt
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal
  capital.txt
Dispur
Patna
Raipur
Panaji
Gandhinagar
Chandigarh
Shimla
Srinagar
Ranchi


With using -q option
$ tail -q state.txt capital.txt
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West BengalDispur
Patna
Raipur
Panaji
Gandhinagar
Chandigarh
Shimla
Srinagar
Ranchi
Bengaluru

4. -f:此选项主要用于系统管理,用于监控许多 Unix 程序在运行时写入的日志文件的增长情况。此选项显示文件的最后十行,并在添加新行时更新。随着新行写入日志,控制台将更新新行。即使工作结束,提示也不会返回,所以我们必须使用中断键中止该命令。通常,应用程序会将错误消息写入日志文件。您可以使用-f选项来检查日志文件中出现的错误消息。

$ tail -f logfile

5. -v:通过使用此选项,来自指定文件的数据总是以文件名开头。

$ tail -v state.txt
==> state.txt <==
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

6. –version:此选项用于显示您系统上当前运行的tail版本。

$ tail --version
tail (GNU coreutils) 8.26
Packaged by Cygwin (8.26-1)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Ian Lance Taylor,
and Jim Meyering.

tail 命令的应用

1.如何使用 tail 和管道(|): tail 命令可以与 unix 的许多其他命令一起使用管道。在以下示例中,tail 命令的输出作为带有 -r 选项的 sort 命令的输入,以相反的顺序对来自文件 state.txt 的最后 7 个状态名称进行排序。

$ tail -n 7 state.txt
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

$ tail -n 7 state.txt | sort -r
West Bengal
Uttarakhand
Uttar Pradesh
Tripura
Telangana
Tamil Nadu
Sikkim

它也可以通过管道与一个或多个过滤器一起进行额外处理。如下例所示,我们使用 cat、head 和 tail 命令,其输出使用指令(>)存储在文件名 list.txt 中。

$ cat state.txt | head -n 20 | tail -n 5  > list.txt

$ cat list.txt
Manipur
Meghalaya
Mizoram
Nagaland
Odisha