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
splashimage=(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