00. 目录
01. 命令概述
tail - 输出文件的末尾部分在标准输出上显示每个FILE的最后10行. 如果多于一个FILE,会一个接一个地显示, 并在每个文件显示的首部给出文件名. 如果没有FILE,或者FILE是-,那么就从标准输入上读取.
tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。
02. 命令格式
tail [选项]… [文件]…
03. 常用选项
tail - 输出文件的末尾部分
在标准输出上显示每个FILE的最后10行. 如果多于一个FILE,会一个接一个地显示, 并在每个文件显示的首部给出文件名. 如果没有FILE,或者FILE是-,那么就从标准输入上读取.
--retry
即使tail开始时就不能访问 或者在tail运行后不能访问,也仍然不停地尝试打开文件. -- 只与-f合用时有用.
-c, --bytes=N
输出最后N个字节
-f, --follow[={name|descriptor}]
当文件增长时,输出后续添加的数据; -f, --follow以及 --follow=descriptor 都是相同的意思
-n, --lines=N
输出最后N行,而非默认的最后10行
--max-unchanged-stats=N
参看texinfo文档(默认为5)
--max-consecutive-size-changes=N
参看texinfo文档(默认为200)
--pid=PID
与-f合用,表示在进程ID,PID死掉之后结束.
-q, --quiet, --silent
从不输出给出文件名的首部
-s, --sleep-interval=S
与-f合用,表示在每次反复的间隔休眠S秒
-v, --verbose
总是输出给出文件名的首部
--help
显示帮助信息后退出
--version
输出版本信息后退出
如果N(字节或者行数)的第一个字符为`+', 那么从每个文件的开头算起的第N项开始显示, 否则, 显示该文件的最后N项. N可以有一个倍数前缀: b表示512,k表示1024,m表示1048576(1兆). 第一个选项 -VALUE 或+VALUE 以-n VALUE或-n +VALUE 方式看待,除非VALUE含有[bkm]后缀倍数 中的一个,在这种情况下,它被看作 -c VALUE 或者-c +VALUE
使用--follow (-f)时,tail默认后接文件描述符, 这意味着即使tail显示的文件改名了,tail仍然可以 追踪到其末尾部分. 如果你确实希望查询文件的实际名而非文件描述符 (例如,日志轮转时), 这种默认的操作就不是你所期望的了. 在这种情况下应使用--follow=name. 这将导致tail通过周期性地重新打开所指定的文件来 追踪其是否被删除了,或者被其他程序重新创建了.
04. 参考示例
4.1 输出文件最后10行
默认情况下,将文件的最后 10 行打印到标准输出。
[deng@localhost test]$ tail /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
deng:x:1000:1000:deng:/home/deng:/bin/bash
oracle:x:1001:1002::/home/oracle:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
itcast:x:1002:1003::/home/itcast:/bin/bash
[deng@localhost test]$
4.2 输出最后 n 行的内容
如果要输出最后 n(这里为 5)行的内容,而非默认的最后 10 行,使用 -n
选项。
[deng@localhost test]$ tail -n 5 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
deng:x:1000:1000:deng:/home/deng:/bin/bash
oracle:x:1001:1002::/home/oracle:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
itcast:x:1002:1003::/home/itcast:/bin/bash
[deng@localhost test]$
4.3 从第n行开始显示文件的内容
从第n(这里为 40)行开始显示文件的内容,直至文件末尾。
[deng@localhost test]$ tail -n +40 /etc/passwd
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
deng:x:1000:1000:deng:/home/deng:/bin/bash
oracle:x:1001:1002::/home/oracle:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
itcast:x:1002:1003::/home/itcast:/bin/bash
[deng@localhost test]$
4.4 输出最后n 个字节的内容
使用 -c
选项,可以指定显示文件的最后 n(这里为 5)个字节的内容。
[deng@localhost test]$ tail -c 5 /etc/passwd
bash
[deng@localhost test]$
4.5 显示多文件最后k行,并且不显示文件名的文件头
[deng@localhost test]$ tail -q -n 2 a.txt file.txt
/home
==============================
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[deng@localhost test]$
4.6 显示多文件最后k行,并且显示文件名的文件头
[deng@localhost test]$ tail -n 2 a.txt file.txt
==> a.txt <==
/home
==============================
==> file.txt <==
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[deng@localhost test]$
4.7 当文件增长时,动态查看文件追加的内容
由于a.txtg随时会有资料写入,想要让该档案在有资料写入时就立刻显示到屏幕上,就利用 -f
选项,可以一直侦测该档案,新加入的资料都会被显示到屏幕上,直到按下 Ctrl + C 才会离开。
[deng@localhost test]$ tail -f a.txt
/etc/passwd
/home
==============================
hello world
4.8 组合使用
列出输出的最后5行
[deng@localhost test]$ cat /etc/passwd | tail -n 5
tcpdump:x:72:72::/:/sbin/nologin
deng:x:1000:1000:deng:/home/deng:/bin/bash
oracle:x:1001:1002::/home/oracle:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
itcast:x:1002:1003::/home/itcast:/bin/bash
[deng@localhost test]$