在 Linux 上查看文件內容的 5 種方法

如何使用 cat、more、head 和 tail 命令查看 Linux 文件的內容,而不只僅是文本文件。html

Linux 提供了許多命令來查看文件的內容,包 括 catmoreheadtail,但這只是一個開始。linux

一方面,即便是最顯而易見的命令也有不少許多用戶不會去使用的選項。還有一些普普統統的命令提供了一些獨特的功能。在本文中,咱們將介紹查看文件內容的命令,以及如何定製這些視圖以更好地知足你的需求的選項。git

cat

cat 命令將文本文件的所有內容發送到終端窗口以供查看。實際上,若是你輸入 cat,而後輸入包含數千行內容的文件名,那麼這些行將以極快的速度在你的窗口中滾動,你將沒法看到除了最後一屏外的其餘文本。對於 Linux 用戶來講 cat 命令很熟悉,但即便是這個基本命令也提供了許多有用的選項,例如對輸出中的行進行編號,這是咱們許多人可能從未使用過的。更進一步,你不只能夠對行進行編號,還能夠選擇如何編號。github

對每行進行編號就像這樣:bash

$ 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. 複製代碼

你也能夠只對有內容的行編號。請注意,對於此命令,僅包含空格的行不被視爲「空」,而是會被編號。less

$ 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 選項忽略重複的空白行,可是要徹底忽略空白行你必須添加另外一個命令。工具

$ cat -s msg
Hello --

I hope you are having a wonderful day!

That's it for ... now bye! s. 複製代碼

要忽略全部空白行,只需以下將 cat 的輸出經過管道傳遞給 grep 命令。 點(.)匹配包含任意字符的文本,所以它將顯示任意非空的行,用於結束一行的回車換行作匹配(LCTT 譯註:此處原文有誤,徑改)。測試

$ cat msg | grep .
Hello --
I hope you are having a wonderful day!
That's it for ... now bye! s. 複製代碼

-E 選項經過在每行末尾加 $ 符提供視覺提示,來顯示行尾是否還有多餘的空格。ui

$ cat -E msg
Hello --$
$
I hope you are having a wonderful day!  $
$
$
That's it for ... now$ $ bye!$ $ s.$ 複製代碼

使用 -A 時,既能夠在每行的末尾顯示 $ 字符,而且製表符會顯示爲 ^I 而不是空白。編碼

$ cat -A msg
Hello --$
$
I hope you are having a wonderful day!$
$
$
That’s it for ...^Inow$
$
bye!$
$
s.$
複製代碼

使用 head 和 tail 顯示文件部份內容

headtail 顯示文件的頭部或尾部,默認爲十行。 你可使用 -3(顯示 3 行)或 -11(顯示 11 行)之類的字符串來指定要查看的其它行數。tail 命令與 head 的工做方式相同,可是顯示文件的尾部而不是頭部。

$ head -3 msg
Hello --
I hope you are having a wonderful day!
$ tail -3 msg
bye!

s.
複製代碼

你還能夠結合使用 headtail 命令來查看文件中間的文本。你只須要選擇起點和想要查看行數便可。在此例中,命令將在文件中顯示第二個一百行,並在 cat 的幫助下爲這些行編號。

$ cat -b mybigfile | head -200 | tail -100
   101  Invoice #2020-06-07a sent to vendor
   ...
複製代碼

使用 more 或者 less 瀏覽一屏文本

more 命令是一次瀏覽一屏內容的天然之選,而 less 經過使用上下鍵盤箭頭增長了在文件中上下移動的能力,這樣你就能夠遍歷內容,而後在文件中回退。

使用 od 查看文本的兩種方法

od(八進制轉儲)命令可以以常規文本和一系列 ASCII 值(即該文本在文件中的實際編碼方式)的形式查看文件。在下面的例子中能夠看到,帶編號的行顯示了 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(八進制 012),而製表符顯示爲 \t(八進制 011)。

od 命令特別有用的用途之一是查看非文本文件以獲取能夠標識文件類型的信息。在這裏,咱們看到 JFIF(JPEG 文件交換格式)標籤,該標籤讓 file 之類報告文件類型的命令將它標示爲 jpg 文件。這裏還有不少其餘有用的信息,特別是若是你對這些文件的格式感到好奇的話。

在接下來的命令中,咱們查看 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 命令提供有關此圖像的信息,咱們可能會看到相似下面這樣的信息。file 命令從文件開頭的數據中提取了全部這些描述性信息:

$ 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 將文件視爲基於文本的圖像

若是你只能在命令行工做,而且想了解特定圖像包含的內容,那麼可使用 jp2a(jpeg to ascii)之類的工具提供字符渲染。圖像在這種格式下的識別程度取決於文件。不要有太多期待,由於你將看到的圖像版本是「低分辨率」下的測試!這是一隻分辨率很低的帝王企鵝。(請離遠點看)

$ 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
複製代碼

總結

Linux 上有不少命令能夠經過各類方式查看文件的內容。其中一些選項在你須要處理文件內容時可能會很是有用。其它的只是……有趣。


via: www.networkworld.com/article/356…

做者:Sandra Henry-Stocker 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章
相關標籤/搜索