Linux命令:顯示文件結尾
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
查看文件內容的特殊方法
相信最基本的cat和less,more你已經很熟悉了,如果有特殊的要求呢:
1. 如果你只想看文件的前5行,可以使用head命令,如:
head -5 /etc/passwd
2. 如果你想查看文件的后10行,可以使用tail命令,如:
tail -10 /etc/passwd
tail -f /var/log/messages
參數-f使tail不停地去讀最新的內容,這樣有實時監視的效果
一、UNIX下的TAIL命令
說明:部分內容摘錄自"永遠的UNIX",http://fanqiang.chinaunix.net/
NAME(名稱)
tail - 輸出文件的末尾部分
SYNOPSIS(總覽)
../src/tail [OPTION]... [FILE]...
DESCRIPTION(描述)
在標准輸出上顯示每個FILE的最后10行. 如果多於一個FILE,會一個接一個地顯示, 並在每個文件顯示的首部給出文件名. 如果沒有FILE,或者FILE是-,那么就從標准輸入上讀取.
- --retry
- 即使tail開始時就不能訪問或者在tail運行后不能訪問,也仍然不停地嘗試打開文件. -- 只與 -f合用時有用.
- -c, --bytes= N
- 輸出最后N個字節
- -f, --follow[={name|descriptor}]
- 當文件增長時,輸出后續添加的數據; -f, --follow以及 --follow= descriptor 都是相同的意思
- -n, --lines= N
- 輸出最后N行,而非默認的最后10行
- --max-unchanged-stats= N
- 參看texinfo文檔(默認為5)
- --max-consecutive-size-changes= N
- 參看texinfo文檔(默認為200)
- --pid= PID
- 與 -f合用,表示在進程ID,PID死掉之后結束.
- -q, --quiet, --silent
- 從不輸出給出文件名的首部
- -s, --sleep-interval= S
- 與 -f合用,表示在每次反復的間隔休眠S秒
- -v, --verbose
- 總是輸出給出文件名的首部
- --help
- 顯示幫助信息后退出
- --version
- 輸出版本信息后退出
如果N(字節或者行數)的第一個字符為`+', 那么從每個文件的開頭算起的第N項開始顯示, 否則, 顯示該文件的最后N項. N可以有一個倍數前綴: b表示512,k表示1024,m表示1048576(1兆). 第一個選項 -VALUE 或+VALUE 以-n VALUE或-n +VALUE 方式看待,除非VALUE含有[bkm]后綴倍數中的一個,在這種情況下,它被看作 -c VALUE 或者-c +VALUE
使用--follow (-f)時,tail默認后接文件描述符, 這意味着即使tail顯示的文件改名了,tail仍然可以追蹤到其末尾部分. 如果你確實希望查詢文件的實際名而非文件描述符 (例如,日志輪轉時), 這種默認的操作就不是你所期望的了. 在這種情況下應使用--follow=name. 這將導致tail通過周期性地重新打開所指定的文件來追蹤其是否被刪除了,或者被其他程序重新創建了.
tail 的完整文檔是以Texinfo手冊形式維護的. 如果 info 和 tail 程序在你那兒都已經安裝好了,那么命令:info tail 應該會讓你訪問到整篇手冊.
從上面的說明可以看到,最常用的形式是:tail -f sys.log
二、WINDOWS下的TAIL工具
sourceforge上有個tail工具不錯, 推薦給大家
1. 首先當然是tail功能了, 可以tail多個文件, 如access.log, error.log
2. 關鍵字高亮功能.
3. workspace管理.
4. 綠色, 免安裝, 只有164k
下載地址 http://sourceforge.net/projects/tailforwin32
其他:
用途
從指定點開始將文件寫到標准輸出。使用tail命令的-f選項可以方便的查閱正在改變的日志文件,tail -f filename會把filename里最尾部的內容顯示在屏幕上,並且不但刷新,使你看到最新的文件內容。
語法
標准語法
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
要以逆序顯示行
tail [ -r ] [ -n Number ] [ File ]
描述
tail 命令從指定點開始將File 參數指定的文件寫到標准輸出。如果沒有指定文件,則會使用標准輸入。Number 變量指定將多少單元寫入標准輸出。Number 變量的值可以是正的或負的整數。如果值的前面有+(加號),從文件開頭指定的單元數開始將文件寫到標准輸出。如果值的前面有-(減號),則從文件末尾指定 的單元數開始將文件寫到標准輸出。如果值前面沒有+(加號)或-(減號),那么從文件末尾指定的單元號開始讀取文件。
Number 變量用於確定計數的起點的單元類型由-b、-c、-k、-m 以及-n 標志確定。如果沒有指定其中的任何一個標志,那么tail 命令就會讀取指定文件的最后十行,並將其寫到標准輸出。這與在命令行輸入-n 10 是相同的。
-m 標志在單字節和雙字節字符環境中提供了一致的結果。當輸入是包含多字節字符的文本文件時應謹慎使用-c 標志,因為產生的輸出可能不從字符邊界開始。
標志
-b Number
從Number 變量表示的512 字節塊位置開始讀取指定文件。
-c Number
從Number 變量表示的字節位置開始讀取指定文件。
-f
如果輸入文件是常規文件或如果File 參數指定FIFO(先進先出),那么tail 命令不會在復制了輸入文件的最后的指定單元后終止,而是繼續從輸入文件讀取和復制額外的單元(當這些單元可用時)。如果沒有指定File 參數,並且標准輸入是管道,則會忽略-f 標志。tail -f 命令可用於監視另一個進程正在寫入的文件的增長。
-k Number
從Number 變量表示的1KB 塊位置開始讀取指定文件。
-m Number
從Number 變量表示的多字節字符位置開始讀取指定文件。使用該標志提供在單字節和雙字節字符代碼集環境中的一致結果。
-n Number
從Number 變量表示的行位置開始讀取指定文件。
-r
從文件末尾以逆序方式顯示輸出。-r 標志的缺省值是以逆序方式打印整個文件。如果文件大於20,480 字節,那么-r 標志只顯示最后的20,480 字節。
-r 標志只有與-n 標志一起時才有效。否則,就會將其忽略。
退出狀態
該命令返回下列的退出值:
0
成功完成。
>0
出現錯誤。
示例
要顯示notes 文件的最后十行,輸入:
tail notes要指定從notes 文件末尾開始讀取的行數,輸入:
tail -n 20 notes
要從第200 字節開始,每次顯示一頁notes 文件,輸入:
tail -c +200 notes | pg
要跟蹤文件的增長,輸入:
tail -f accounts
這顯示accounts 文件的最后十行。tail 命令繼續顯示添加到accounts 文件中的行。顯示會一直繼續,直到您按下Ctrl-C 按鍵順序來停止。
文件
/usr/bin/tail
包含tail 命令。