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