Linux 命令使用:cat與tac、more與less、head與tail
Linux
系統中有許多命令提供檢視檔案內容的功能,無所謂哪個命令更好,在具體工作中,根據需求選擇具有不同功能特點的命令。
1.cat <file>
檢視檔案內容;指定輸入建立檔案;連線或合併檔案
【1】檢視一個或多個檔案內容
tmpuser:test/ $ ll total 0 tmpuser:test/ $ echo 'a' > t1.file tmpuser:test/ $ echo 'b' > t2.file tmpuser:test/ $ cat t1.file a tmpuser:test/ $ cat t1.file t2.file a b
cat
命令檢視檔案內容是該命令常用的使用方式,通過新增引數可以增加其他功能。
【2】顯示行號、縮小空行顯示
tmpuser:test/ $ cat -n t3.file 1a 2 3 4b tmpuser:test/ $ cat -b t3.file 1a 2b tmpuser:test/ $ cat -sb t3.file 1a 2b
由該示例可知,-s,--squeeze-blank
引數用於縮小多個空行到一個空行;-n,--number
引數用於給顯示的檔案內容增加行號;-b,--number-nonblank
引數用於給顯示的非空行檔案內容增加行號。
【3】根據檔案、標準輸入建立檔案
tmpuser:test/ $ cat t1.file t2.file > t4.file tmpuser:test/ $ cat t4.file a b tmpuser:test/ $ cat > t5.file << EOF > a > b > EOF tmpuser:test/ $ cat t5.file a b
由該示例可知,cat
命令通過>
輸出重定向符號,可以根據現有檔案,或者標準輸入建立新檔案。
<<
作為輸入重定向符號,定義EOF
作為輸入分界符,在EOF
之間的內容作為輸入內容。該符號不一定非要為EOF
,只不過常用該符號而已。
【4】根據檔案、標準輸入追加檔案
tmpuser:test/ $ cat t4.file a b tmpuser:test/ $ cat t1.file t2.file >> t4.file tmpuser:test/ $ cat t4.file a b a b tmpuser:test/ $ cat t5.file a b tmpuser:test/ $ cat >> t5.file <<EOF > a > b > EOF tmpuser:test/ $ cat t5.file a b a b
由該示例可知,cat
命令通過>>
輸出重定向符號,可以根據現有檔案,或者標準輸入追加檔案內容。
2.tac <file>
tac
為cat
的倒寫形式,檢視的檔案內容也是以行為單位倒序顯示的。
【1】以行為單位倒序顯示檔案內容
tmpuser:test/ $ cat t6.file 1 2 3 4 5 tmpuser:test/ $ tac t6.file 5 4 3 2 1
由示例可知,該命令提供檔案內容的倒序顯示。
該命令的倒序功能可以應用於日誌的檢視中,用於檢視最新日誌資訊。並且該命令提供-s,--separator=STRING
選項,用於倒序顯示分隔後的部分內容。
【2】倒序顯示字串分隔的部分
tmpuser:test/ $ cat t6.file 1 2 3 4 5 tmpuser:test/ $ tac t6.file -s '3' 4 5 1 2 3
由示例可知,可以通過指定分隔字串的形式,倒序顯示部分內容。
當檔案內容不多時,使用cat
命令直接檢視檔案內容較為直觀,但是當檔案較大、內容較多時,推薦使用提供了分頁檢視檔案內容功能的命令。
3.more <file>
more
命令直接載入指定的檔案,提供分頁檢視檔案內容的功能,空格鍵向下翻頁,b
鍵向上翻頁,q
鍵退出檢視。常用引數如下:
-<number>: +<number>: +/<string>: -s:
【1】指定分頁大小,並從指定行開始顯示
tmpuser:test/ $ cat -n t7.file 1a 2 3 4b 5c 6d 7e tmpuser:test/ $ more -2 +4 t7.file b c --More--(66%)
該示例指定分頁大小為2
,從第4
行開始顯示,通過空格鍵和b
鍵進行分頁顯示。
【2】指定分頁大小,搜尋指定內容,並從其前兩行開始顯示
tmpuser:test/ $ cat -n t7.file 1a 2 3 4b 5c 6d 7e tmpuser:test/ $ more -2 +/d t7.file ...skipping b c --More--(66%)
該示例指定分頁大小為2
,從字串d
所在行的前兩行開始顯示,通過空格鍵和b
鍵進行分頁顯示。
【3】合併多個空行為一行
tmpuser:test/ $ cat -n t7.file 1a 2 3 4b 5c 6d 7e tmpuser:test/ $ more -s t7.file a b c d e
4.less <file>
less
命令與more
較為相似,估計以後會越來越相似,因為許多less
能夠實現的操作也被逐漸新增到more
的功能列表中。
less
命令同樣提供分頁檢視檔案內容的功能,與more
命令相同,可以使用空格鍵向下翻頁,b
鍵向上翻頁,也可以通過上下鍵實現翻頁。相對於more
命令,less
能夠實現更多的操作。常用引數如下:
-
-N:
顯示行號 -
+<number>:
指定行開始顯示 -
+/<string>:
搜尋指定內容,並從該行開始顯示 -
-s:
合併多個空行為一行 -
+F:
持續跟蹤新增內容,需要ctrl+c
才能退出命令
less
命令開啟檔案後,即使到達檔案末尾也不會自動退出,該命令更像是提供給使用者一個仔細檢視檔案內容的場景,需要使用q
鍵退出。
/<string>: ?<string>: n: N:
【1】顯示行號、並從指定行開始展示
tmpuser:test/ $ cat -n t8.file 1one 2 3 4two 5three 6four 7five tmpuser:test/ $ less -N +4 t8.file 4 two 5 three 6 four 7 five ~ ~ t8.file lines 4-7/7 (END)
【2】從指定搜尋內容開始展示
tmpuser:test/ $ cat -n t8.file 1one 2 3 4two 5three 6four 7five tmpuser:test/ $ less +/two t8.file two three four five t8.file lines 4-7/7 (END)
【3】合併多個空行
tmpuser:test/ $ cat -n t8.file 1one 2 3 4two 5three 6four 7five tmpuser:test/ $ less -sN t8.file 1 one 2 4 two 5 three 6 four 7 five t8.file lines 1-7/7 (END)
【4】持續跟蹤新增內容
tmpuser:test/ $ less +F t8.file one two three four five Waiting for data... (interrupt to abort)
使用+F
引數,或者在less <file>
命令開啟檔案後按F
鍵,都可以進入跟蹤檔案新增內容狀態,該狀態一般應用於檢視或監控日誌,會自動顯示出最新新增的檔案內容。需要ctrl+c
退出該狀態,然後按q
鍵才會退出。
【5】搜尋檔案中指定內容
tmpuser:test/ $ less t8.file one two three four five /two # press enter two three four five
使用/<string>
或?<string>
搜尋後匹配到的內容會顯示在第一行,按n
鍵則下一個匹配內容的位置會顯示在第一行,按N
則上一個匹配內容的位置會顯示在第一行。
n
和N
切換匹配內容位置的行為,是根據由上向下或者是由下向上的搜尋而定的。為了觀察內容方便,提供有g
鍵和G
鍵用於定位檔案內容首行和尾行。
5.head<file>
head
命令較為常用,用法也較為簡單,用於顯示檔案的前幾行內容,預設為前10
行,可以通過-n
引數指定行數。
【1】顯示檔案前幾行內容
tmpuser:test/ $ cat -n t8.file 1one 2 3 4two 5three 6four 7five tmpuser:test/ $ head -n 4 t8.file one two
當-n
引數後指定的數字為負數時,用於反選,顯示後幾行之前的檔案內容。
【2】顯示後幾行之前的檔案內容
tmpuser:test/ $ cat -n t8.file 1one 2 3 4two 5three 6four 7five tmpuser:test/ $ head -n -2 t8.file one two three
6.tail <file>
tail
命令與head
作用相反,用於顯示檔案後幾行內容,預設為前10
行,可以通過-n
引數指定行數。
【1】顯示檔案後幾行內容
tmpuser:test/ $ cat -n t8.file 1one 2 3 4two 5three 6four 7five tmpuser:test/ $ tail -n 4 t8.file two three four five
當-n
引數後指定的數字為正數時,用於反選,顯示從第幾行開始後的檔案內容。
【2】顯示第幾行開始後的檔案內容
tmpuser:test/ $ cat -n t8.file 1one 2 3 4two 5three 6four 7five tmpuser:test/ $ tail -n +3 t8.file two three four five
tail
命令有一個很實用的引數-f
,該命令用於顯示檔案實時追加的內容,與前面提到的less +F <file>
命令效果類似。
【3】實時顯示檔案追加內容
tmpuser:test/ $ tail -f t8.file one two three four five
該命令會保持檔案監控狀態,實時重新整理追加內容。