一天一個shell命令 linux文本操作系列-head,tail命令詳解_linux shell

來源:互聯網
上載者:User

head命令中文介紹:

用法:head [選項]... [檔案]...將每個指定檔案的頭10 行顯示到標準輸出。如果指定了多於一個檔案,在每一段輸出前會給出檔案名稱作為檔案頭。如果不指定檔案,或者檔案為"-",則從標準輸入讀取資料。長選項必須使用的參數對於短選項時也是必需使用的。 -c, --bytes=[-]K顯示每個檔案的前K 位元組內容;如果附加"-"參數,則除了每個檔案的最後K位元組資料外顯示剩餘全部內容 -n, --lines=[-]K顯示每個檔案的前K 行內容;如果附加"-"參數,則除了每個檔案的最後K 行外顯示剩餘全部內容 -q, --quiet, --silent不顯示包含給定檔案名稱的檔案頭 -v, --verbose總是顯示包含給定檔案名稱的檔案頭   --help顯示此協助資訊並退出   --version顯示版本資訊並退出K 後面可以跟乘號:b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,GB 1000*1000*1000, G 1024*1024*1024, 對於T, P, E, Z, Y 同樣適用。

tail命令詳解

用法:tail [選項]... [檔案]...顯示每個指定檔案的最後10 行到標準輸出。若指定了多於一個檔案,程式會在每段輸出的開始添加相應檔案名稱作為頭。如果不指定檔案或檔案為"-" ,則從標準輸入讀取資料。長選項必須使用的參數對於短選項時也是必需使用的。 -c, --bytes=K輸出最後K 位元組;另外,使用-c +K 從每個檔案的第K 位元組輸出 -f, --follow[={name|descriptor}]即時輸出檔案變化後追加的資料。-f, --follow 等於--follow=descriptor  -F即--follow=name --retry -n, --lines=K輸出最後K 行,代替最後10 行;使用-n +K 從每個檔案的第K 位元組輸出   --max-unchanged-stats=N使用--follow=name, 重新開啟一個在N(預設為5)次迭代後沒有改變大小的檔案來看它是否被解除串連或重新命名(這是迴圈記錄檔的通常情況)。由於有inotify,這個選項很少使用。   --pid=PID同 -f 一起使用,當 PID 所對應的進程死去後終止 -q, --quiet, --silent不輸出給出檔案名稱的頭   --retry即使目標檔案不可訪問依然試圖開啟;在與參數--follow=name 同時使用時常常有用。 -s, --sleep-interval=N  with -f, sleep for approximately N seconds               (default 1.0) between iterations.               With inotify and --pid=P, check process P at               least once every N seconds. -v, --verbose      always output headers giving file names   --help顯示此協助資訊並退出   --version顯示版本資訊並退出如果位元組數或行數K 的第一個字元是"+",輸出從檔案開始第K 個項目,否則輸出檔案最後K 個項目。K 可以使用一下幾種單位之一:b 512,kB 1000,K 1024,MB 1000*1000,M 1024*1024,GB 1000*1000*1000,G 1024*1024*1024,以及T,P,E,Z,Y。如果您希望即時追查一個檔案的有效名稱而非描述內容(例如迴圈日誌),預設的程式動作並不如您所願。在這種場合可以使用--follow=name 選項,它會使tail 定期追蹤開啟給定名稱的檔案,以確認它是否被刪除或被其它某些程式重新建立過。

head:  列印檔案的前10行(預設)
tail:     列印檔案的後10行(預設)

如果你是個典型的開發或者部署人員,是不是覺得開始親切起來。我們平時用的最多的命令

$tail -f  catalina.out 

$head

執行個體:

1. 列印head.txt, tail.txt的前10行

$head head.txt tail.txt

複製代碼 代碼如下:

 ==> head.txt <==
head.txt內容

==> tail.txt <==

tail.txt內容

2.  列印 1K的內容

$head –c1K head.txt

3.  列印前5行內容

$head -n5 head.txt

4.  列印出最後5行之外的所有行

$head -n -5 head.txt

這裡-5表示負5
解讀 --help

複製代碼 代碼如下:

用法:head [選項]... [檔案]...
將每個指定檔案的頭10 行顯示到標準輸出。
 如果指定了多於一個檔案,在每一段輸出前會給出檔案名稱作為檔案頭。
 如果不指定檔案,或者檔案為"-",則從標準輸入讀取資料。
長選項必須使用的參數對於短選項時也是必需使用的。
-c, --bytes=[-]K         顯示每個檔案的前K 位元組內容;
 如果附加"-"參數,則除了每個檔案的最後K位元組資料外
 顯示剩餘全部內容
-n, --lines=[-]K           顯示每個檔案的前K 行內容;
 如果附加"-"參數,則除了每個檔案的最後K 行外顯示
 剩餘全部內容
-q, --quiet, --silent       不顯示包含給定檔案名稱的檔案頭
-v, --verbose               總是顯示包含給定檔案名稱的檔案頭
--help                          顯示此協助資訊並退出
--version                     顯示版本資訊並退出
K 後面可以跟乘號: 
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
 GB 1000*1000*1000, G 1024*1024*1024, 對於T, P, E, Z, Y 同樣適用。

解讀:

這裡唯一注意:如果不指定檔案,或者檔案為"-",則從標準輸入讀取資料。

$tail

執行個體:

1.列印一個檔案最後10行

$tail tail.txt

2.追蹤記錄檔,列印檔案最後幾行,並且保持讀取追加資料

tail -f tail.txt

解讀--help

用法:tail [選項]... [檔案]... 顯示每個指定檔案的最後10 行到標準輸出。  若指定了多於一個檔案,程式會在每段輸出的開始添加相應檔案名稱作為頭。  如果不指定檔案或檔案為"-" ,則從標準輸入讀取資料。 長選項必須使用的參數對於短選項時也是必需使用的。 -c, --bytes=K      輸出最後K 位元組;另外,使用-c +K 從每個檔案的第K 位元組輸出 -f, --follow[={name|descriptor}]  即時輸出檔案變化後追加的資料。 -F            即--follow=name --retry -n          --lines=K 輸出最後K 行,代替最後10 行;span style="color: #000000">-n +K  從每個檔案的第K 位元組輸出--max-unchanged-stats=N     使用--follow=name, 重新開啟一個在N(預設為5) 次迭代後沒有改變大小的檔案來看它是否被解除連 接或重新命名(這是迴圈記錄檔的通常情況)。 由於有inotify,這個選項很少使用。 --pid=PID       同 -f 一起使用,當 PID 所對應的進程死去後終止 -q              --quiet, --silent      不輸出給出檔案名稱的頭 --retry           即使目標檔案不可訪問依然試圖開啟;在與參數 --follow=name       同時使用時常常有用。 -s             --sleep-interval=N with -f, sleep for approximately N seconds (default 1.0) between iterations. With inotify and--pid=P, check process P at least once every N seconds. -v          --verbose always output headers giving file names             --help 顯示此協助資訊並退出              --version 顯示版本資訊並退出  如果位元組數或行數K 的第一個字元是"+",輸出從檔案開始第K 個項目,否則輸出檔案  最後K 個項目。K 可以使用一下幾種單位之一: b 512,kB 1000,K 1024,MB 1000*1000,M 1024*1024,  GB 1000*1000*1000,G 1024*1024*1024,以及T,P,E,Z,Y。

解讀:

1. 區別-f 和-F

借網上一例子:
視窗1 輸入 

$while [ "true" ] ; do date >>test.log; sleep 1 ; done;


#每隔一秒傳入一個日期到test.log

視窗2 輸入

$tail -f test.log

視窗3 輸入

$rm test.log

此時視窗2 則停止列印,而test.log已經重建

如果採用-F的形式,也會重建一個新的test.log,但會自動重新讀取 

收尾

tail和head是兩個非常常用的命令,熟練掌握方便查看檔案內容。兩個很簡單,也很相似,所以放在一起寫出來。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.