Linux【2】-管理文件-4-1-内容查看-tail

七、tail (取出后面几行)

tail 命令和 head 命令正好相反,它用来查看文件末尾的数据,其基本格式如下:

[root@localhost ~]# tail [选项] 文件名

此命令常用的选项及含义如表 1 所示。

表 1 tail 命令选项及含义

选项 含义

-n K	这里的 K 指的是行数,该选项表示输出最后 K 行,在此基础上,如果使用 -n +K,则表示从文件的第 K 行开始输出。
-c K	这里的 K 指的是字节数,该选项表示输出文件最后 K 个字节的内容,在此基础上,使用 -c +K 则表示从文件第 K 个字节开始输出。
-f	输出文件变化后新增加的数据。

【例 1】查看 /etc/passwd 文件最后 3 行的数据内容。

[root@localhost ~]# tail -n 3 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

除此之外,还可以采用如下这种形式:

[root@localhost ~]# tail -3 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

可以看到,使用 tail -n 3 /etc/passwd 命令和 tail -3 /etc/passwd 的效果是一样的。

【例 2】查看 /etc/passwd 文件末尾 100 个字节的数据内容。

[root@localhost ~]# tail -c 100 /etc/passwd
cpdump:x:72:72::/:/sbin/nologin

【例 3】 监听文件的新増内容。tail 命令有一种比较有趣的用法,可以使用 “-f” 选项来监听文件的新増内容,例如:

[root@localhost ~]#tail -f anaconda-ks.cfg
@server-platform
@server-policy
pax
oddjob
sgpio
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
%end
#光标不会退出文件,而会一直监听在文件的结尾处

这条命令会显示文件的最后 10 行内容,而且光标不会退出命令,每隔一秒会检查一下文件是否增加新的内容,如果增加就追加到原来的输出结果后面并显示。因此,这时如果向文件中追加一些数据(需要开启一个新终端):

[root@localhost ~]# echo 2222222222 >> anaconda-ks.cfg
[root@localhost ~]# echo 3333333333 >> anaconda-ks.cfg
#在新终端中通过echo命令向文件中追加数据

那么,在原始的正在监听的终端中,会看到如下信息:

[root@localhost ~]# tail -f anaconda-ks.cfg @server-platforin
@server-policy
pax
oddjob
sgpio
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
%end2222222222
33333333333
#在文件的结尾处监听到了新増数据

如果想终止输出,按【Ctrl+c】键中断 tail 命令即可。

【例 4】 假如我想要显示 ~/.bashrc 的第 11 到第 20 行呢? 答: 这个应该不算难,想一想,在第 11 到第 20 行,那么我取前 20 行,再取后十行,所以结果就是:

head –n 20 ~/.bashrc | tail –n 10 ,
这样就可以得到第 11 到第 20 行之间的内容了! 但是里面涉及到管线命令,需要在第三篇的时候才讲的到!

读取多个文件

tanqianshan[test]$ echo 111 > 1.tsv
tanqianshan[test]$ echo 222 > 2.tsv

tanqianshan[test]$ tail -f *.tsv

==> 1.tsv <==
111

==> 2.tsv <==
222
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn