Linux Shell腳本編程--Head/Tail命令詳解
head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標準輸出中,而 tail 想當然爾就是看檔案的結尾,看看下面的范例:
## (1)
displays the first 6 lines of a file
head -6 readme.txt
## (2)
displays the last 25 lines of a file
tail -25 mail.txt
范例一是顯示檔案的前 6 行,范例二則是顯示檔案最后的 25 行。
而下面的范別,結合 了 head 與 tail 的指令,顯示檔案的第 11 行到第 20 行:
##(3)
head -20 file | tail -10
在 tail 的使用手冊頁中顯示了比 head 還多的可用參數,其中有一個很好用的參數 " -f ",使用此參數時,tail 不會回傳結束信號,除非我們去自行去中斷它;相反的,它會一直等待一段時間,一直到他發現資料自它最后一次被讀取后,又被加入新的一行時:
## (4)
display ongoing updates to the given
## log file
tail -f /usr/tmp/logs/daemon_log.txt
上述范例可以動態顯示該 log 文件的動態更新。
假設該服務 程序是一直不斷的加入動態資料到 /usr/adm/logs/daemon_log.txt 的 log 文件里,在命令列控制窗口中使用 tail -f,它將會以一定的時間實時追蹤該檔的所有更新。 ( -f 的只有在其輸入為檔案時才能使用 )。
假如你在 tail 后下了多個檔案參數,你便能在同一個窗口內一次追蹤數個 log 檔:
## track the mail log and the server error log
## at the same time.
tail -f /var/log/mail.log /var/log/apache/error_log
tac -- 反過來串連?!
cat 倒過來怎么拼 ?這就是 tac 的功能, 它是把檔案的順序內容反過來串連用的,那么 ~ 它都用在什么狀況下呢 ? 任何須要以后進先出的順序重新排列組件的工作都用得上它 ! 以下面的指令來說,便是以自最后建立的到最先建立的順序,列出三個最新建的使用者帳號:
## (5)
last 3 /etc/passwd records - in reverse
$ tail -3 /etc/passwd | tac
curly:x:1003:100:3rd Stooge:/homes/curly:/bin/ksh
larry:x:1002:100:2nd Stooge:/homes/larry:/bin/ksh
moe:x:1001:100:1st Stooge:/homes/moe:/bin/ksh
head與tail一套組合拳:
head -n 10030 application.log | tail -n +10000
輸出application.log的10000行至10030行內容。
浙公網安備 33010602011771號