這兒有幾個命令和程序用於查看文件內容在Linux上。
工作中使用文件是艱鉅的任務之一,大多數的計算機用戶無論是新手、普通用戶、高級用戶、開發人員或者管理員等等。工作中使用文件能有效和高效都是一門技術!
今天,這篇文章我們就將討論最受歡迎的命令:head、tail、cat。
我們大多數已經用到過這些命令了,但是,當我們使用它們的時候卻很少使它們很有效。
1.head命令
這個head命令能夠查看所給任何文件的頭十行,基本的語法是:
head [options] [file(s)]
例如,下面這個命令將顯示'/etc/passwd'文件的頭十行.
[root@taoteng ~]# 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
如果給定多個文件的話,head命令將會分開顯示每個文件的頭十行,例如,下面的命令將會分開顯示每個文件的前十行:
[root@taoteng ~]# head /etc/passwd /etc/shadow
==> /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
==> /etc/shadow <==
root:$6$KRjRBRefgWtx8eNP$xWrfedJsYdhyt0FnA1P4VHe8neGza4SLpHeXlk7Ys3G.EAzeCL4PqVe61FHDDLeY6B1Yg.je1HEHY3ri43Sx90:16120:0:99999:7:::
bin:*:15240:0:99999:7:::
daemon:*:15240:0:99999:7:::
adm:*:15240:0:99999:7:::
lp:*:15240:0:99999:7:::
sync:*:15240:0:99999:7:::
shutdown:*:15240:0:99999:7:::
halt:*:15240:0:99999:7:::
mail:*:15240:0:99999:7:::
uucp:*:15240:0:99999:7:::
如果希望檢索比默認十行多/少呢,則可使用"-n"參數,以及告知一個整數來檢索行數,例如,下面的命令將顯示"/var/log/yum.log"文件的前5行:
[root@taoteng ~]# head -n5 /var/log/yum.log
Feb 20 08:55:36 Installed: lftp-4.0.9-1.el6.i686
Feb 20 19:57:01 Installed: hesiod-3.1.0-19.el6.i686
Feb 20 19:57:07 Installed: procmail-3.22-25.1.el6.i686
Feb 20 19:59:22 Installed: sendmail-8.14.4-8.el6.i686
Feb 20 22:21:37 Installed: mailcap-2.1.31-2.el6.noarch
事實上,可以不必加入"-n"參數,僅用連字符和指定一個整數(不能有空格)就能得到相同的結果和上面命令:
[root@taoteng ~]# head -5 /var/log/yum.log
Feb 20 08:55:36 Installed: lftp-4.0.9-1.el6.i686
Feb 20 19:57:01 Installed: hesiod-3.1.0-19.el6.i686
Feb 20 19:57:07 Installed: procmail-3.22-25.1.el6.i686
Feb 20 19:59:22 Installed: sendmail-8.14.4-8.el6.i686
Feb 20 22:21:37 Installed: mailcap-2.1.31-2.el6.noarch
這個head也能夠顯示任何想要的字節數通過使用“-c”參數,例如,下面命令將顯示前45個字節:
[root@taoteng ~]# head -c45 /var/log/yum.log
Feb 20 08:55:36 Installed: lftp-4.0.9-1.el6.i
2.tail 命令
這個tail命令允許你去顯示一個文檔的最後十行。同上面的命令很相似,tail也支持"-n"參數和"-c"參數:
基本的語法是:
# tail [options] [filename]
例如,下面的命令將顯示文件"anaconda.log"的後十行:
[root@taoteng ~]# tail /var/log/a
anaconda.ifcfg.log anaconda.storage.log anaconda.yum.log
anaconda.log anaconda.syslog audit/
anaconda.program.log anaconda.xlog
[root@taoteng ~]# tail /var/log/anaconda.log
08:49:23,479 DEBUG : writeksconfig is a direct step
08:49:23,481 INFO : Writing autokickstart file
08:49:25,295 INFO : leaving (1) step writeksconfig
08:49:25,296 INFO : moving (1) to step setfilecon
08:49:25,296 DEBUG : setfilecon is a direct step
08:49:25,297 INFO : setting SELinux contexts for anaconda created files
08:49:56,254 INFO : leaving (1) step setfilecon
08:49:56,255 INFO : moving (1) to step copylogs
08:49:56,256 DEBUG : copylogs is a direct step
08:49:56,256 INFO : Copying anaconda logs
如果提供多個文件,tail也將會分開顯示每個文件的後十行:
[root@taoteng ~]# tail /var/log/anaconda.log /var/log/anaconda.syslog
==> /var/log/anaconda.log <==
08:49:23,479 DEBUG : writeksconfig is a direct step
08:49:23,481 INFO : Writing autokickstart file
08:49:25,295 INFO : leaving (1) step writeksconfig
08:49:25,296 INFO : moving (1) to step setfilecon
08:49:25,296 DEBUG : setfilecon is a direct step
08:49:25,297 INFO : setting SELinux contexts for anaconda created files
08:49:56,254 INFO : leaving (1) step setfilecon
08:49:56,255 INFO : moving (1) to step copylogs
08:49:56,256 DEBUG : copylogs is a direct step
08:49:56,256 INFO : Copying anaconda logs
==> /var/log/anaconda.syslog <==
00:06:20,507 INFO kernel:EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts:
00:06:20,510 DEBUG kernel:SELinux: initialized (dev sda5, type ext4), uses xattr
00:06:21,062 INFO kernel:EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts:
00:06:21,062 DEBUG kernel:SELinux: initialized (dev sda3, type ext4), uses xattr
00:06:21,429 INFO kernel:EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts:
00:06:21,429 DEBUG kernel:SELinux: initialized (dev sda2, type ext4), uses xattr
00:41:20,368 DEBUG kernel:SELinux: 2048 avtab hash slots, 225596 rules.
00:41:20,530 DEBUG kernel:SELinux: 2048 avtab hash slots, 225596 rules.
00:41:21,620 DEBUG kernel:SELinux: 9 users, 12 roles, 3576 types, 179 bools, 1 sens, 1024 cats
00:41:21,620 DEBUG kernel:SELinux: 81 classes, 225596 rules
相應的,你也可以打印文件的後幾行使用"-n"參數:
[root@taoteng ~]# tail -5 /var/log/anaconda.log
08:49:25,297 INFO : setting SELinux contexts for anaconda created files
08:49:56,254 INFO : leaving (1) step setfilecon
08:49:56,255 INFO : moving (1) to step copylogs
08:49:56,256 DEBUG : copylogs is a direct step
08:49:56,256 INFO : Copying anaconda logs
你也可以使用"-c"參數顯示文件的後N個字節:
[root@taoteng ~]# tail -c50 /var/log/anaconda.log
step
08:49:56,256 INFO : Copying anaconda logs
3.cat 命令
這個"cat"命令是使用最廣泛、最通用的工具。它拷貝標準輸入到標準輸出,這個命令也支持滾屏如果文本文檔不在當前屏幕。
cat的基本的語法是:
# cat [options] [filename] [-] [filename]
cat使用最頻繁是查看一個文件的內容,所有這一切都要求打開一個文件去讀是cat之後加空格和文件名
[root@taoteng ~]# cat /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
...
cat命令也可以使文件數連在一起:
# echo 'Hi Tecmint-Team' > 1
# echo 'Keep connected' > 2
# echo 'Share your thought' > 3
# echo 'connect us [email protected]' > 4
# cat 1 2 3 4 > 5
# cat 5
Hi Tecmint-Team
Keep connected
Share your thought
connect us [email protected]
它也可以用來創建的文件。它是通過執行cat其次是輸出重定向操作符和要創建的文件名來實現。
[root@taoteng ~]# cat > test.cat
This is a test file cat command
Create a folder test
我們也可以對cat自定義end表示,下面就是它的實現:
[root@taoteng ~]# cat > test.cat.end << end
> This is a test file cat command
> I am Avishek
> Here i am writing this post
> end
[root@taoteng ~]# cat test.cat.end
I am Avishek
Here i am writing this post
永遠不要低估cat的強大功能,它也能用作複製文件
# cat avi.txt
I am a Programmer by birth and Admin by profession
# cat avi.txt > avi1.txt
# cat avi1.txt
I am a Programmer by birth and Admin by profession
相對cat的命令是什麼呢?對!!它就是"tac"也是Linux下面的一個命令,說任何事情不如展現它的功能更好。
創建一個有關所有月份的文件"month",每個月份都佔用一行:
[root@taoteng ~]# cat month
January
February
March
April
May
June
July
August
September
October
November
December
對比更明顯:
[root@taoteng ~]# cat month && tac month
January
February
March
April
May
June
July
August
September
October
November
December
December
November
October
September
August
July
June
May
April
March
February
January
想了解更多cat命令的用法,請點擊:13 cat Command Usage
現在就這些,我也正在研究另一個有趣的文章,至此敬請關注!!