linux 檢視檔案內容的命令

shwenwen發表於2009-09-16
linux 檢視檔案內容的命令
觀看檔案內容:cat, tac, more, less, head, tail, nl,[@more@]

剛剛我們提到的都只是在於顯示檔案的外觀,或者是移動與複製一個檔案或目錄而已,那麼如果我們要視察一個檔案的內容時,該如何是好呢?!這裡有相當多有趣的指令可以來分享一下:最常使用的顯示檔案內容的指令可以說是 cat 與 more 及 less 了!此外,如果我們要檢視一個很大型的檔案(好幾百MB時),但是我們只需要後端的幾行字而已,那麼該如何是好?呵呵!用 tail 呀,此外, tac 這個指令也可以達到!好了,說說各個指令的用途吧!

cat 由第一行開始顯示檔案內容
tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
more 一頁一頁的顯示檔案內容
less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
head 只看頭幾行
tail 只看尾巴幾行
nl 顯示的時候,順道輸出 行號!
od 以二進位制的方式讀取檔案內容!

底下我們來談一談每個指令的基本用法吧!
--------------------------------------------------------------------------------

· cat 語法:

[root @test /root ]# cat [-nAE]
引數說明:
-n: 顯示時,連行號印出螢幕上。
-A: 將 DOS 下的 與斷行字元都列出來!
-E: 將 DOS 編輯的檔案中,僅列出 斷行字元出來!
範例:
[root @test /root]# cat ~/.bashrc <==顯示 .bashrc 這個檔案
# .bashrc

# User specific aliases and functions
PATH="/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH"
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ll='ls -l --color=never'

[root @test /root]# cat ~/.bashrc -n <==顯示 .bashrc 並且加上行號!
1 # .bashrc
2
3 # User specific aliases and functions
4 PATH="/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH"
6 alias rm='rm -i'
7 alias cp='cp -i'
8 alias mv='mv -i'
9 alias ll='ls -l --color=never'

[root @test /root]# cat -A regexp.txt
This is a cat, however, I need a dog.^M$
I want to "Happy" and and /Happy/ here.^M$
OK! ^Ieverythins is OK^M$
Now, I will eat my food^M$
are you ^Ifinished your work^M$
what do you 123 goto where^M$
顯示出 DOS 檔案的幾個特殊符號,以上面檔案為例,
可發現 ^M 為斷行符號,而每行的 $ 為行尾符號,
至於 ^I 則是 按鍵啦!

說明:
嘿嘿! Linux 裡面有『貓』?!喔!不是的, cat 是 Concatenate (連續)的簡寫,主要的功能是將一個檔案的內容連續的印出在螢幕上面!例如上面的例子中,我們將重要的引數檔 .bashrc 印出來!如果加上 -n 的話,則每一行前面還會加上行號呦!cat 比較少用!畢竟當你的檔案內容的行數超過 40 行以上,嘿嘿!根本來不及看!所以,配合 more 或者是 |more 來執行比較好!此外,如果是一般的 DOS 檔案時,就需要特別留意一些奇奇怪怪的符號了,例如斷行與等,要顯示出來,就得加入 -A 之類的引數了!。
 
--------------------------------------------------------------------------------

· tac
語法:

[root @test /root ]# tac [檔名]
引數說明:
範例:
[root @test /root]# tac ~/.bashrc <==發現了沒?反向印出呦!
fi
. /etc/bashrc
if [ -f /etc/bashrc ]; then
# Source global definitions

alias h='history'
alias lm='ls -al|more'
alias ll='ls -l'
# alias ll='ls -l --color=never'
alias mv='mv -i'
alias cp='cp -i'
alias rm='rm -i'

export PATH
PATH="/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH"
# User specific aliases and functions

# .bashrc

說明:
tac 這個好玩了!怎麼說呢?詳細的看一下, cat 與 tac ,有沒有發現呀!對啦! tac 剛好是將 cat 反寫過來,所以他的功能就跟 cat 相反啦, cat 是由『第一行到最後一行連續顯示在螢幕上』,而 tac 則是『由最後一行到第一行反向在螢幕上顯示出來』,很好玩吧!
 
--------------------------------------------------------------------------------

· more
語法:

[root @test /root ]# more [檔名]
引數說明:
範例:
[root @test /root]# more ~/.bashrc <==一頁一頁的顯示檔案內容
[root @test /]# ls -al | more <==一頁一頁的將 ls 的內容顯示出來

說明:
more 真是個很有用的指令!我好喜歡呦!當你的檔案太大的時後,那麼使用 cat 將沒有辦法看清楚!這個時候你可以使用 more 來做動作!more 也可以用來做為管線的同時執行之用!例如你在執行 find 這個尋找的指令時,可以同時使用 |more ,則搜尋結果可以一頁一頁的列出呦!關於管線( pipe )的用法我們在 bash shell 的地方再來談!
 
--------------------------------------------------------------------------------

· less
語法:

[root @test /root ]# less [檔名]
引數說明:
範例:
[root @test /root]# less ~/.bashrc

說明:
less 的用法比起 more 又更加的有彈性,怎麼說呢?在 more 的時候,我們並沒有辦法向前面翻,只能往後面看,但若使用了 less 時,呵呵!就可以使用 [pageup] [pagedown] 等按鍵的功能來往前往後翻看檔案,您瞧,是不是更容易使用來觀看一個檔案的內容了呢!?
 
more 與 less 的用途與用法真的是很廣啦!首先,你可以在 more 與 less 的畫面中進行『搜尋』的工作!如何進行呢?我們以 less 來說明好了,如果你想要知道 /etc/man.config 這個檔案裡面有沒有一個叫做 GER 的大寫字眼,那麼可以:
 

[root @test /root ]# less /etc/man.config
按鍵說明:
/word:在 /etc/man.config 這個檔案中搜尋 word 這個字串的所在
q :離開 less 的畫面

 
然後在輸入 / 之後,游標會移動到最左下角等待輸入,這個時候您只要輸入你的字串之後,就會自動的幫你找出來該關鍵詞囉!
 
--------------------------------------------------------------------------------

· head
語法:

[root @test /root ]# head [-n number] [檔名]
引數說明:
-n :顯示 number 行
範例:
[root @test /root]# head ~/.bashrc <==預設情況下,顯示頭十行
[root @test /root]# head -n 20 ~/.bashrc<==顯示頭二十行!

說明:
head 的英文意思就是『頭』啦,那麼這個東西的用法自然就是顯示出一個檔案的前幾行囉!沒錯!就是這樣!若沒有加上 -n 這個引數時,預設只顯示十行,若只要一行呢?那就加入『 head -n 1 filename 』即可!
 
--------------------------------------------------------------------------------

· tail
語法:

[root @test /root ]# tail [-n number] [檔名]
引數說明:
-n :顯示 number 行
範例:
[root @test /root]# tail ~/.bashrc
[root @test /root]# tail -n 5 ~/.bashrc <==只顯示最後面五行!

說明:
那麼有 head 自然就有 tail ( 尾巴 ) 囉!沒錯!這個 tail 的用法跟 head 的用法差不多類似,只是顯示的是後面幾行就是了!預設也是顯示十行,若要顯示非十行,就加 -n number 的引數!
 

例題一:假如我想要顯示 ~/.bashrc 的第 11 到第 20 行呢?
答:

這個應該不算難,想一想,在第 11 到第 20 行,那麼我取前 20 行,再取後十行,所以結果就是:『 head –n 20 ~/.bashrc | tail –n 10 』,這樣就可以得到第 11 到第 20 行之間的內容了!但是裡面涉及到管線命令,需要在第三篇的時候才講的到!
--------------------------------------------------------------------------------

· nl
語法:

[root @test /root ]# nl [檔名]
引數說明:
範例:
[root @test /root]# nl ~/.bashrc

說明:
那麼 nl 又是什麼?這也沒什麼,這個指令的用法跟 cat -n 的用法類似,也就是『可以印出行號』的指令來檢視檔案啦!也是挺好用的!
 
--------------------------------------------------------------------------------

· od
語法:

[root @test /root ]# od [檔名]
引數說明:
範例:
[root @test /root]# od ~/.bashrc
0000000 020043 061056 071541 071150 005143 021412 052440 062563
0000020 020162 070163 061545 063151 061551 060440 064554 071541
0000040 071545 060440 062156 063040 067165 072143 067551 071556
0000400 062562 005047 066141 060551 020163 036550 064047

說明:
好了,那麼如果有一個非 ASCII 的資料檔案呢?例如那個 binary 的檔案!使用 vi 根本就是看不著~這個時候看來只有使用將整個資料以數值方法讀出來啦!那就是 od 這個指令來讀出來呦!這個東西可以用來輸出該資料為十進位制、16進位等等的資料格式!不過這個東西對於工程師可能比較有用啦!因為印出來的東西都是數字或記憶體當中的資料~~

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/143526/viewspace-1027035/,如需轉載,請註明出處,否則將追究法律責任。

相關文章