12、本节主要学习在linux系统下文本文件内容显示的相关命令,这些命令有cat、tac等。

12.1 cat

使用cat命令可以显示文本文件的内容,也可以把几个文件内容附加到另一个文件中。

12.1.1 命令语法:

cat[选项][文件]

12.1.2选项参数:

                     cat命令选项含义

选项                      选项含义

-n                        对输出的所有行编号

-b                        对非空输出行编号

-s                         当遇到有连续两行以上的空白行时,就替换为一行的空白行

-E                         在每行结束处显示$

 

12.1.3 实例:

例1:显示/etc/grub.conf文件的内容

[root@ser01 ~]# cat /etc/grub.conf    
# grub.conf generated by anaconda    
#    
# Note that you do not have to rerun grub after making changes to this file    
# NOTICE:  You have a /boot partition.  This means that    
#          all kernel and initrd paths are relative to /boot/, eg.    
#          root (hd0,0)    
#          kernel /vmlinuz-version ro root=/dev/vda3    
#          initrd /initrd-[generic-]version.img    
#boot=/dev/vda    
default=0    
timeout=5    
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz    
hiddenmenu    
title CentOS (2.6.32-431.el6.x86_64)    
        root (hd0,0)    
        kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=3acde1c8-9946-441b-a5e6-2e53b6530f87 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet    
        initrd /initramfs-2.6.32-431.el6.x86_64.img

例2:把文件textfile1的文件内容加上行号后输入到textfile2文件中

[root@ser01 ~]# cat textfile1    
a    
b    
c    
[root@ser01 ~]# cat -n textfile1 > textfile2    
[root@ser01 ~]# cat textfile2    
     1  a    
     2  b    
     3  c

例3:把文件textfile1和textfile2的文件内容加上行号(空白行不加)之后将内容附加到文件textfile3中

[root@ser01 ~]# cat textfile1  
a    
b    
c    
[root@ser01 ~]# cat textfile2    
     1  a    
     2  b    
     3  c    
[root@ser01 ~]# cat -b textfile1 textfile2 >> textfile3    
[root@ser01 ~]# cat textfile3    
     1  a    
     2  b    
     3  c    
     4       1  a    
     5       2  b    
     6       3  c

例4:在每行的结尾处附加$符号显示/etc/passwd文件

[root@ser01 ~]# cat -E /etc/passwd  
root:x:0:0:root:/root:/bin/bash$    
bin:x:1:1:bin:/bin:/sbin/nologin$    
daemon:x:2:2:daemon:/sbin:/sbin/nologin$    
adm:x:3:4:adm:/var/adm:/sbin/nologin$    
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$    
sync:x:5:0:sync:/sbin:/bin/sync$    
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown$    
halt:x:7:0:halt:/sbin:/sbin/halt$    
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin$    
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin$    
operator:x:11:0:operator:/root:/sbin/nologin$    
games:x:12:100:games:/usr/games:/sbin/nologin$    
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin$    
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin$    
nobody:x:99:99:Nobody:/:/sbin/nologin$    
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin$    
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin$    
postfix:x:89:89::/var/spool/postfix:/sbin/nologin$    
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin$


例5:使用cat命令创建mm.txt文件

[root@ser01 ~]# cat >mm.txt<<EOF  
> Hello                       //在此输入字符Hello    
> Linux                       //在此输入字符Linux    
> EOF                         //在此输入字符EOF,会自动回到Shell提示符界面    
[root@ser01 ~]# cat mm.txt    
Hello    
Linux

//查看mm.txt文件内容

 

12.2 tac

使用tac命令可以从最后一行显示文件内容,可以看出tac是cat的反向显示。

12.2.1 命令语法:

tac[选项][文件]

12.2.2 选项参数:

                     tac命令选项参数含义

选项               选项含义

-b                  在行前而非行尾添加分隔标志

-r                   将分隔标志视作正则表达式来解析

-s<字符>      使用指定字符串代替换行作为分隔标志

 

12.2.3 实例:

例1:从最后一行开始显示/root/pu文件的内容。

[root@ser01 ~]# cat /root/pu    
Hello Linux    
Hello Centos    
[root@ser01 ~]# tac /root/pu    
Hello Centos    
Hello Linux

例2:使用字符s代替换行作为分隔标志显示/root/pu文件内容。

[root@ser01 ~]# tac -s R /root/pu  
Hello Linux    
Hello Centos


12.3 more:分页显示文本文件

      more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。 

      该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%)可以用下列不同的方法对提示做出回答:

按Space键:显示文本的下一屏内容。

按Enier键:只显示文本的下一行内容。 

按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。 

按H键:显示帮助屏,该屏上有相关的帮助信息。

按B键:显示上一屏内容。

按Q键:退出rnore命令。 


12.3.1 命令语法: 

more(语法)(参数) 


12.3.2选项参数 

-<数字>:指定每屏显示的行数; 

-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”; 

-c:不进行滚屏操作。每次刷新这个屏幕; 

-s:将多个空行压缩成一行显示; 

-u:禁止下划线; +<数字>:从指定数字的行开始显示。 参数 文件:指定分页显示内容的文件。 


12.3.3实例:

例1::分页显示文件/etc/services的内容

[root@ser01 ~]# more /etc/services

# /etc/services:

# $Id: services,v 1.48 2009/11/11 14:32:31 ovasik Exp $

#

# Network services, Internet style

# IANA services version: last updated 2009-11-10

#

# Note that it is presently the policy of IANA to assign a single well-known

# port number for both TCP and UDP; hence, most entries here have two entries

# even if the protocol doesn't support UDP operations.

# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports

# are included, only the more common ones.

#

# The latest IANA port assignments can be gotten from

#       http://www.iana.org/assignments/port-numbers

# The Well Known Ports are those from 0 through 1023.

# The Registered Ports are those from 1024 through 49151

# The Dynamic and/or Private Ports are those from 49152 through 65535

#

# Each line describes one service, and is of the form:

#

# service-name  port/protocol  [aliases ...]   [# comment]


tcpmux          1/tcp                           # TCP port service multiplexer

tcpmux          1/udp                           # TCP port service multiplexer

rje             5/tcp                           # Remote Job Entry

rje             5/udp                           # Remote Job Entry

echo            7/tcp

echo            7/udp

discard         9/tcp           sink null

discard         9/udp           sink null

--More--(0%)


例2:逐页显示/roo/testfile文件的内容,如有连续两行以上空白行则以一行空白行显示。

[root@ser01 ~]# more -s /root/testfile


例3:从第20行开始显示/root/testfile文本的内容。

[root@ser01 ~]# more +20 /root/testfile


例4:一次两行显示/etc/passwd

[root@ser01 ~]# more -2 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

--More--(7%)


12.4 less:回卷显示文本文件

ess命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。

12.4.1命令语法:

 less[选项][文件]


12.4.2选项参数:

      less命令选项含义

选项         选项含义

-e                 文件内容显示完毕后,自动退出; 

-f                  强制显示文件; 

-g                 不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度; 

-l                  搜索时忽略大小写的差异; 

-N                 每一行行首显示行号; 

-s                 将连续多个空行压缩成一行显示; 

-S                 在单行显示较长的内容,而不换行显示; 

-x<数字>       将TAB字符显示为指定个数的空格字符。

12.4.3实例:

例1:回卷显示/etc/services文件的内容

[root@ser01 ~]# less /etc/services

# /etc/services:

# $Id: services,v 1.48 2009/11/11 14:32:31 ovasik Exp $

#

# Network services, Internet style

# IANA services version: last updated 2009-11-10

#

# Note that it is presently the policy of IANA to assign a single well-known

# port number for both TCP and UDP; hence, most entries here have two entries

# even if the protocol doesn't support UDP operations.

# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports

# are included, only the more common ones.

#

# The latest IANA port assignments can be gotten from

#       http://www.iana.org/assignments/port-numbers

# The Well Known Ports are those from 0 through 1023.

# The Registered Ports are those from 1024 through 49151

# The Dynamic and/or Private Ports are those from 49152 through 65535

#

# Each line describes one service, and is of the form:

#

# service-name  port/protocol  [aliases ...]   [# comment]


tcpmux          1/tcp                           # TCP port service multiplexer

tcpmux          1/udp                           # TCP port service multiplexer

rje             5/tcp                           # Remote Job Entry

rje             5/udp                           # Remote Job Entry

echo            7/tcp

echo            7/udp

discard         9/tcp           sink null

discard         9/udp           sink null

/etc/services 


12.5 tail:查看文件末尾数据

    tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。 


注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。

12.5.1命令语法:

tail[选项][文件]


12.5.2 选项参数:

          tail命令选项含义

选项        选项含义

-n<K>       输出最后K行,这里K是数字,使用-n+K则从每个文件的第K行输出

-c<K>       输出最后K个字节,这里K是数字,使用-c+K则从每个文件的第K字节输出

-f          即时输出文件变化后追加的数据


12.5.3 实例:

例1:查看文件/etc/passwd的末尾3行数据内容。

[root@ser01 ~]# tail -n 3 /etc/passwd

saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin


[root@ser01 ~]# tail -3 /etc/passwd

saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin


//可以发现tail -n 3 /etc/passwd命令和tail -3 /etc/passwd起到一样的作用。


例2:从第10行开始显示文件/etc/passwd的数据内容。

[root@ser01 ~]# tail -n +10 /etc/passwd 

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin


例3:查看文件/etc/passwd末尾100字节的数据内容

[root@ser01 ~]# tail -c 100 /etc/passwd

/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin


例4:从第500个字节开始显示文件/etc/passwd的数据内容

[root@ser01 ~]# tail -c +500 /etc/passwd 

r:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin


例5:动态跟踪文件/var/log/messages的增长情况

[root@ser01 ~]# tail -f /var/log/messages

Oct 22 05:52:00 localhost dhclient[867]: bound to 192.168.1.56 -- renewal in 36238 seconds.

Oct 22 15:55:58 localhost dhclient[867]: DHCPREQUEST on eth0 to 192.168.1.1 port 67 (xid=0x23b34669)

Oct 22 15:55:58 localhost dhclient[867]: DHCPACK from 192.168.1.1 (xid=0x23b34669)

Oct 22 15:56:00 localhost dhclient[867]: bound to 192.168.1.56 -- renewal in 40777 seconds.

Oct 23 03:15:37 localhost dhclient[867]: DHCPREQUEST on eth0 to 192.168.1.1 port 67 (xid=0x23b34669)

Oct 23 03:15:37 localhost dhclient[867]: DHCPACK from 192.168.1.1 (xid=0x23b34669)

Oct 23 03:15:38 localhost dhclient[867]: bound to 192.168.1.56 -- renewal in 40953 seconds.

Oct 23 14:38:11 localhost dhclient[867]: DHCPREQUEST on eth0 to 192.168.1.1 port 67 (xid=0x23b34669)

Oct 23 14:38:11 localhost dhclient[867]: DHCPACK from 192.168.1.1 (xid=0x23b34669)

Oct 23 14:38:13 localhost dhclient[867]: bound to 192.168.1.56 -- renewal in 38831 seconds.


//tail命令会每隔一秒去检查一下文件是否增加新的内容,如果增加就追加在原来的输出后面并显示。如果想终止输出,按【Ctrl+C】键中断tail命令即可。


12.6 head:显示指定文件前若干行

head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。


12.6.1 命令语法:

head[选项][文件]


12.6.2 选项参数:

       head命令选项含义

选项         选项含义

-n<K>     显示每个文件的前K行内容;如果附加“-”参数,则除了每个文件的最后K行外显示剩余全部内容,这里的K是数字。

-c<k>      显示每个文件的前K字节内容;如果附加“-”参数,则除了每个文件的最后K字节数据外显示剩余全部内容,这里的K是数字。

-v             总是显示包含给定文件名的文件头


12.6.3 实例:

例1:查看文件/etc/passwd的开始10行数据内容。

[root@ser01 ~]# head /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin


例2:查看文件/etc/passwd的前3行数据内容。

[root@ser01 ~]# head -n 3 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin


[root@ser01 ~]# head -3 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin


//可以发现head -n 3 /etc/passwd命令和 head -3 /etc/passwd命令起到一样的作用。


例3:查看文件/etc/passwd除了最后10行的全部数据内容。

[root@ser01 ~]# head -n -10 /etc/passwd 

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin


例4:查看文件/etc/passwd的前100个字节的数据内容

[root@ser01 ~]# head -c 100 /etc/passwd 

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin


例5:查看文件/etc/passwd除了最后100个字节以外的数据内容。

[root@ser01 ~]# head -c -100 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin


例6:查看文件/etc/passwd的文件内容,并显示文件名:

[root@ser01 ~]# head -v /etc/passwd

==> /etc/passwd <==

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin