Linux之tail命令使用攻略
语法
从指定点开始将文件写到标准输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。
标准语法
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
tail 命令从指定点开始将File 参数指定的文件写到标准输出。如果没有指定文件,则会使用标准输入。
Number 变量用于确定计数的起点的单元类型由-b、-c、-k、-m 以及-n 标志确定。即Number指数起始位置的具体数目。并与-b,-n等参数为单位决定具体的文件中的某个具体位置,如果没有指定其中的任何一个标志,那么tail 命令就会读取指定文件的最后十行,并将其写到标准输出。这与在命令行输入-n 10 是相同的。注意Number的前面有正负号的问题,如果Number为'+10'那么效果是从正向数的第10行的位置,如果为'-10'(如果省略正负号,那么默认为'-10','-10'即等价于'10')那么效果为倒数第10行的位置。Number 变量指定将多少单元写入标准输出。Number 变量的值可以是正的或负的整数。如果值的前面有+(加号),从文件开头正数指定的单元数开始将文件写到标准输出。如果值的前面有-(减号),则从文件末尾开始计数倒数指定的单元数开始截止到文件末尾将文件写到标准输出。如果值前面没有+(加号)或-(减号),那么从文件末尾(即相当于'-'符号)指定的单元号开始读取文件。参见案例一。
选项
-m 标志在单字节和双字节字符环境中提供了一致的结果。当输入是包含多字节字符的文本文件时应谨慎使用-c 标志,因为产生的输出可能不从字符边界开始。
-f 如果输入文件是常规文件或如果File 参数指定FIFO(先进先出),那么tail 命令不会在复制了输入文件的最后的指定单元后终止,而是继续从输入文件读取和复制额外的单元(当这些单元可用时)。如果没有指定File 参数,并且标准输入是管道,则会忽略-f 标志。tail -f 命令可用于监视另一个进程正在写入的文件的增长。参见案例二。
-n Number 从Number 变量表示的行位置开始读取指定文件。即从第Number行(包括第Number行)读取到文件的末尾行。如果不指定Number正数还是倒数,那么默认是倒数第Number行开始向前读取。参见案例一。
-r 从文件末尾以逆序方式显示输出。-r 标志的缺省值是以逆序方式打印整个文件。如果文件大于20,480 字节,那么-r 标志只显示最后的20,480 字节。
-r 标志只有与-n 标志一起时才有效。否则,就会将其忽略。
案例分析
案例一:要指定从notes 文件的倒数第20行的位置读取到文件末尾,输入:
tail -n 20 ./notes //读出文本的倒数前20行。
案例二::要指定从notes 文件的正向数第20行的位置读取到文件末尾,输入:
tail -n +20 ./notes //读出文本的倒数前20行。
案例三:要显示notes 文件的最后十行,输入:
tail ./notes.txt //即不带参数调用,那么默认取出最后10行内容。
案例四:-n参数案例,取出最后n行内容,如果省略-n参数,那么n默认为10.
[root@iZ25sngm7hfZ ~]# tail -n 5 /etc/group #取出最后5行内容。
apache:x:48:wyq
mysql:x:27:wyq
xiaomei:x:500:
yaqiang:x:501:
wyq:x:502:
[root@iZ25sngm7hfZ ~]#
[root@iZ25sngm7hfZ ~]# tail /etc/group #不带-n参数,默认取出最后10行
stapdev:x:158:
sshd:x:74:
tcpdump:x:72:
nscd:x:28:
slocate:x:21:
apache:x:48:wyq
mysql:x:27:wyq
xiaomei:x:500:
yaqiang:x:501:
wyq:x:502:
[root@iZ25sngm7hfZ ~]#
案例五: //显示文本最后10行,并监控文件,如果有其他程序的写入操作,那么将写入实时读出。这显示notes.txt文件的最后十行。tail 命令继续显示添加到accounts 文件中的行。显示会一直继续,直到您按下Ctrl-C 按键顺序来停止。
[root@iZ25sngm7hfZ ~]# tail -f /etc/group
stapdev:x:158:
sshd:x:74:
tcpdump:x:72:
nscd:x:28:
slocate:x:21:
apache:x:48:wyq
mysql:x:27:wyq
xiaomei:x:500:
yaqiang:x:501:
wyq:x:502:
案例六:同时取出结尾为.s的文件的末尾2行,每个文件都取出2行。
[root@iZ25ja2kaemZ ~]# tail -n 2 ./*.s
==> ./a.s <==
10
33
==> ./b.s <==
5555
66666