嗨!歡迎回到上班族的命令列生存手冊。終於到了最後一位基礎三劍客— cat
。前面幾個章節,我們已經蒐集到了手電筒(ls
)、藍寶堅尼(cd
),最後一個拼圖是放大鏡,前面章節提到 cat
指令,可以將文字檔案 (或者是任何可以用文字表達的) 印在螢幕上(Standard output)。
一樣先看目前的目錄有什麼東西可以查看吧?下 $ ls
,例如,我們想要看看這個 TaskSchedular.java
,賣什麼藥。
$ cat TaskSchedular.java
按下 Enter,cat 就會將內容輸出到畫面上囉。同樣的,後面的檔案也是路徑,所以只要找得到檔案,都能被印出來。
指令像是這樣:$ cat <path>
,例如有個文件在子目錄裡面,可以像這樣直接印 $ cat firefox/140esr/readme.md
只要檔案存在,就能印出來。路徑的結構方式可以運用在 cd
章節學到的,印上一頁甚至前幾頁的文件。
$ cat -n TaskSchedular.java
加上 -n
就會一併印出行號囉。
就是這樣簡單好用的指令,不過一開始 cat
的功能似乎不是拿來印東西,突如其來的進入考古的環節。
Cat 不是貓(別失望!),他是 Concatenate (連接) 的縮寫。本來是用來組合多個分裂後的檔案而使用的。打個比方,你有一個合法來源取得的小說電子檔案,但被分成每 20 行,存成一個獨立的檔案,分成: xaa.txt
、 xab.txt
、xac.txt
、 xad.txt
,用 cat
就可以把他們黏回去。
$ cat xaa.txt xab.txt xac.txt xad.txt > output.txt
先不要管 >
是什麼,用心去感受應該就是前面那些檔案被輸出到 output.txt
了。再試試 cat 把 output.txt
印出來驗證一下即可。
但 cat
來預覽超長的檔案,也不是這麼方便。這時突然殺出第四個指令要學:less
。 別忘記三大天王總有四個人!基礎三劍客也不意外,有四位。
像這類的長文件,用 cat
來讀確實會比較辛苦,在命令列的環境下有一類型的軟體稱之為:pager,可以用分頁的方式呈現資料,提昇閱讀性。less
就是一種 pager。 用法跟 cat
類似,只要將檔案餵給 less
就會進入長文件預覽。
指令像是這樣:$ less <path>
$ less TaskSchedular.java
一進入發現整個畫面都變成文件的瀏覽畫面,這裡是一些基礎的使用方式:
less
操作模式大致上相同(甚至連 less
自身的內頁都類似),讀者可以嘗試按下 h 會進入 less
說明頁面,操作方式相同。
$ less -N TaskSchedular.java
加上 -N
(是大寫的 N!) 就會一併印出行號囉。
瀏覽文字時難免會想直接搜尋看看有沒有提到某個關鍵字,在 less
開啟文件後,可以按下 /
,進入 pattern match 模式後,就可以直接打字輸入想找的內容。
shift + n
)這個搜尋方式也可以稍微熟悉一下,以後會用到的。
有另一個指令聽起來很鬧,叫做 tac
,就是 cat
反過來寫。只要用這個指令,就能反向輸出到螢幕上。
舉個例子,這個 abc 檔案是這個樣子的,下 cat
會這樣印出來:
$ cat abc a b c
a
b
c
如果用了 tac
,就會變成這個樣子:
$ tac abc c b a
c
b
a
東西誕生總是有他的理由,你也認識了一個酷酷的指令。
說明完四位三劍客之後,差不多該對你坦白了,其實你只需要閱讀下一個章節,差不多就能了解幾乎筆者介紹的所有指令。到底是什麼東西這麼神,下集待續。