查看Linux上文件內(nèi)容的5個(gè)方法
譯文【51cto.com快譯】
Linux提供了查看文件內(nèi)容的許多命令,包括cat、more、head和tail,而這只是個(gè)開(kāi)端。
舉例說(shuō),連最明顯的命令也有大量選項(xiàng),比許多Linux用戶平常用的多得多。還有一些不太明顯的命令提供了一些獨(dú)特的功能。本文介紹了查看文件內(nèi)容的命令和定制那些視圖以更好地滿足實(shí)際需要的選項(xiàng)。
cat
cat命令將文本文件的全部?jī)?nèi)容發(fā)送到終端窗口以供查看。實(shí)際上,如果您鍵入“cat”,后面跟以有數(shù)千行的文件的名稱,那些行會(huì)在窗口一閃而過(guò),您只能看到最后一屏幕的文本。不過(guò),盡管cat命令對(duì)Linux用戶來(lái)說(shuō)很熟悉,連這個(gè)基本命令也提供了許多有用的選項(xiàng),比如對(duì)輸出的行進(jìn)行編號(hào),我們?cè)S多人可能從未使用過(guò)該選項(xiàng)。補(bǔ)充一下,您不僅可以對(duì)行進(jìn)行編號(hào),進(jìn)行編號(hào)時(shí)還有一些選擇。
對(duì)每行編號(hào)如下所示:
- $ cat -n msg
- 1 Hello --
- 2
- 3 I hope you are having a wonderful day!
- 4
- 5
- 6 That's it for ... now
- 7
- 8 bye!
- 9
- 10 s.
還可以只對(duì)有內(nèi)容的行進(jìn)行編號(hào)。注意:內(nèi)容為空的行對(duì)該命令而言并不被認(rèn)為是“空行”,也會(huì)加以編號(hào)。
- $ cat -b msg
- 1 Hello --
- 2 I hope you are having a wonderful day!
- 3 That's it for ... now
- 4 bye!
- 5 s.
cat命令讓您可以用-s選項(xiàng)忽略重復(fù)的空行,但您得添加另一個(gè)命令才能完全排除空行。
- $ cat -s msg
- Hello --
- I hope you are having a wonderful day!
- That's it for ... now
- bye!
- s.
想忽略所有空行,只要將輸出從cat命令pipe到grep命令,如下所示。點(diǎn)(.)匹配包括空字符的文本,所以它會(huì)顯示內(nèi)容空白的行。
- $ cat msg | grep .
- Hello --
- I hope you are having a wonderful day!
- That's it for ... now
- bye!
- s.
-E選項(xiàng)提供了視覺(jué)線索,顯示行末尾有沒(méi)有多余的空白,只需在每行末尾添加$。
- $ cat -E msg
- Hello --$
- $
- I hope you are having a wonderful day! $
- $
- $
- That's it for ... now$
- $
- bye!$
- $
- s.$
若使用-A,您既得到每行末尾處的$字符,還得到顯示為^I而不是空白區(qū)的標(biāo)簽。
- $ cat -A msg
- Hello --$
- $
- I hope you are having a wonderful day!$
- $
- $
- That’s it for …^Inow$
- $
- bye!$
- $
- s.$
用head和tail顯示文件的部分內(nèi)容
head和tail命令顯示文件的頂部或底部,默認(rèn)顯示10行。您可以指定不同的行數(shù)來(lái)查看,只要使用-3(顯示3行)或-11(顯示11行)之類的字符串。tail命令的工作原理與head一樣,但顯示文件的底部,而不是頂部。
- $ head -3 msg
- Hello --
- I hope you are having a wonderful day!
- $ tail -3 msg
- bye!
- s.
您還可以結(jié)合head和tail命令來(lái)查看文件頂部和底部之間的文本。您只要選擇起點(diǎn)以及想查看的行數(shù)。在該例子中,該命令將顯示文件中的第200行;借助cat命令,可對(duì)那些行進(jìn)行編號(hào)。
- $ cat -b mybigfile | head -200 | tail -100
- 101 Invoice #2020-06-07a sent to vendor
- ...
用more或less每次瀏覽一屏幕的文本
more命令顯然用于每次瀏覽一屏幕的文件內(nèi)容,而less增添了使用向上和向下鍵盤箭頭在文件中上下移動(dòng)的功能,以便您可以開(kāi)始掃描、然后返回到文件前面的內(nèi)容。
用od一次雙向查看文本文件
od(八進(jìn)制輸出)命令讓您可以將文件輸出為普通文本和一系列ASCII值(即該文本在文件中如何實(shí)際編碼)。您可以從下面示例中看到,編號(hào)的行顯示了數(shù)字ASCII值,隔行顯示了文本和非輸出字符。
- $ od -bc msg
- 0000000 110 145 154 154 157 040 055 055 012 012 111 040 150 157 160 145
- H e l l o - - \n \n I h o p e
- 0000020 040 171 157 165 040 141 162 145 040 150 141 166 151 156 147 040
- y o u a r e h a v i n g
- 0000040 141 040 167 157 156 144 145 162 146 165 154 040 144 141 171 041
- a w o n d e r f u l d a y !
- 0000060 012 012 012 124 150 141 164 047 163 040 151 164 040 146 157 162
- \n \n \n T h a t ' s i t f o r
- 0000100 040 056 056 056 011 156 157 167 012 012 142 171 145 041 012 012
- . . . \t n o w \n \n b y e ! \n \n
- 0000120 163 056 012
- s . \n
注意:換行字符顯示成\n(八進(jìn)制012),標(biāo)簽顯示成\t(八進(jìn)制011)。
od命令特別有幫助的用途之一是查看非文本文件,以獲取識(shí)別文件類型的信息。在這里,我們看到JFIF(JPEG文件交互格式)標(biāo)簽向報(bào)告文件類型的命令(比如file)表明這是jpg文件。還有其他許多有用的信息,如果你很想知道這些文件的格式更是如此。
在這下一個(gè)命令中,我們查看jpg文件的起始部分。
- $ od -bc arrow.jpg | head -12
- 0000000 377 330 377 340 000 020 112 106 111 106 000 001 001 000 000 001
- 377 330 377 340 \0 020 J F I F \0 001 001 \0 \0 001
- 0000020 000 001 000 000 377 333 000 103 000 003 002 002 002 002 002 003
- \0 001 \0 \0 377 333 \0 C \0 003 002 002 002 002 002 003
- 0000040 002 002 002 003 003 003 003 004 006 004 004 004 004 004 010 006
- 002 002 002 003 003 003 003 004 006 004 004 004 004 004 \b 006
- 0000060 006 005 006 011 010 012 012 011 010 011 011 012 014 017 014 012
- 006 005 006 \t \b \n \n \t \b \t \t \n \f 017 \f \n
- 0000100 013 016 013 011 011 015 021 015 016 017 020 020 021 020 012 014
- \v 016 \v \t \t \r 021 \r 016 017 020 020 021 020 \n \f
- 0000120 022 023 022 020 023 017 020 020 020 377 333 000 103 001 003 003
- 022 023 022 020 023 017 020 020 020 377 333 \0 C 001 003 003
如果我們向file命令索取該圖像文件方面的信息,可以看到這樣的內(nèi)容。file命令從文件開(kāi)始處的數(shù)據(jù)獲取所有這些描述性信息。
- $ file arrow.jpg
- arrow.png: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 500x375, components 3
用jp2a查看文件,顯示成基于文本的圖像
如果你只能使用命令行,想了解某個(gè)圖像文件含有什么內(nèi)容,可以使用jp2a(jpeg to ascii)之類的工具來(lái)提供字符版本。該格式中圖像多易于識(shí)別將取決于文件。別抱太大的希望,因?yàn)槟銜?huì)看到的圖像版本“分辨率很低”!該圖像是分辨率很低的帝企鵝。
- $ jp2a Emperor_Penguin.jpg
- MMMMMMMMWOdkNMMMMMMMMMMMMMMMMMMM
- MMMXK0kc.... ,OKMMMMMMMMMMMMMMMM
- MMNK0Ol... :Xx'dNMMMMMMMMMMMMM
- MMMMMMMd;lx00Oo. ..xMMMMMMMMMMMM
- MMMMMMK.OXMMMMMN,...lMMMMMMMMMMM
- MMMMMMx'KXNNMMMMK....0MMMMMMMMMM
- MMMMMMx:kkKNWWMMMl.. 'NMMMMMMMMM
- MMMMMMddx0NNNWMMMK'...;NMMMMMMMM
- MMMMMMck0NNWWWWWMMd ..lMMMMMMMM
- MMMMMM.d0KXNWWWWMMo ...WMMMMMMM
- MMMMMM.xOXNNWNMMMW. ....KMMMMMMM
- MMMMMM'kKNKWXWMMMK ..'.0MMMMMMM
- MMMMMMxckXNNNNMMMX .:..XMMMMMMM
- MMMMMMW;xKNWWWMMMM. .;. NMMMMMMM
- MMMMMMMok0NNWNWMMMx .l..MMMMMMMM
- MMMMMMMkxOKXWXNMMMMl.:'dMMMMMMMM
- MMMMMMM0dKOdKXXNMMMMNx,WMMMMMMMM
- MMMMMMMWoKxldXKNNMMMMM;MMMMMMMMM
- MMMMMMMMxxxxdNWNXNMMMM;MMMMMMMMM
- MMMMMMMMxOcoo0XOOOOWMW,kMMMMMMMM
- MMMMMMM0xK;.cO0dNX:0XXd;NMMMMMMM
- MMMNkdd:,'ldXXO0xl;x0kx:;lKMMMMM
- MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
原文標(biāo)題:5 ways to examine the content of files on Linux,作者:Sandra Henry-Stocker
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51cto.com】