比cat更好用的命令!

良許發表於2023-03-18

大家好,我是良許。

作為程式設計師,大家一定對 cat 這個命令不陌生。它主要的功能就是用來顯示文字檔案的具體內容。

cat 命令兩個很重大的缺陷:1. 不能語法高亮輸出;2. 文字太長的話無法翻頁輸出。正是這兩個不足,使得 cat 只能用來檢視行數不多的小檔案。

為了解決 cat 命令這兩個缺點,國外有大牛將 cat 命令進行了增強,強大到連 cat 親媽都不認識!

它就是本文的主角:bat 命令。

bat 命令可以用來做啥呢?簡單來說有下面這些:

  1. 語法高亮。它可以根據程式語言以及 markdown 語法將文字關鍵詞高亮,可閱讀性大大增強;
  2. 自動翻頁。如果文字內容太長,超過一頁的話,它會自動將內容透過管道傳到 less 命令,實現翻頁的效果;
  3. 整合Git。bat 命令跟 git 完美結合,將文字的修改部分在左側展示,一眼就可以看出檔案修改了啥。
  4. 顯示不可列印字元。有些字元無法透過 cat 在螢幕上顯示,但 bat 讓它們無處遁形!

bat 的這些特性,真的是分分鐘讓 cat 打下神壇!(怪不得人家是以 b 開頭的,牛 B 的 B !)

1. bat命令的安裝

現在很多 Linux 發行版的官方源已經內建了這個命令,所以只需使用它們對應的安裝工具就可以安裝。

以 Ubuntu 為例,只需要執行以下命令就可以安裝 bat

$ sudo apt-get install bat

這裡要注意一下,由於名稱的衝突,在 Ubuntu 下無法直接透過敲 bat 這三個字母執行 bat 命令,而是需要敲 batcat 。為了方便,我們可以設定別名:

$ alias "bat=batcat"

2. bat命令的使用

2.1 基本使用

bat 命令的用法跟 cat 大差不差的,我們直接上圖來看下對比。

file

可以看到,bat 命令除了輸出與 cat 一樣的文字內容之外,還輸出了包括行數、檔名、表格外框等元素,看起來資訊會更多。

如果行數比較多,還可以使用 --line-range 來顯示指定行數的內容。

file

而且,它還可以跟其它命令透過管道一起結合著用:

file

2.2 語法高亮

bat 對大部分程式語言和標記語言提供語法高亮,這樣閱讀起來就更方便了,可讀性更強。

file

而且,你還可以透過使用 --list-languages 引數來顯示所有支援的語言:

file

2.3 Git 整合

bat 能從 git 中獲取檔案的修改並展示在邊欄(見下圖):

file

2.4 顯示不可列印字元

有時候文字里有一些不可顯示的字元,如果使用 cat 命令檢視的話,將看不到這些字元。但如果使用 bat 命令,這些字元就無處遁形。這裡需要加上 -A/--show-all 引數。

file

2.5 自動翻頁功能

這應該是直戳 cat 命令痛點的功能。

由於 cat 命令不管文字長度如何,全部一股腦就給你顯示出來,使得我們需要檢視內容比較多的文字檔案的時候,必須選擇其它命令(比如 moreless 等等)。

bat 命令很明顯是衝著這個痛點來的。它在文字內容超過一屏可顯示範圍時,就會將其傳送到 less 命令,然後我們就可以像使用 less 一樣進行翻頁操作,非常方便。

file

當然,如果你想不使用翻頁功能的話,也可以使用 --paging=never 引數來關閉這個功能。但我估計沒人這麼做。

3. 主題定製

bat 命令支援多種風格的語法高亮主題,可以滿足大部分程式設計師的需求。可以使用下列命令檢視 bat 支援的所有主題:

$ bat --list-themes

file

如果你想指定主題為 GitHub ,那麼可以使用以下命令:

$ bat --theme=GitHub 檔名

但這樣做是臨時的,當你關閉終端工具,或者系統重啟,主題就會恢復預設。

可以透過設定 BAT_THEME 環境變數來選定主題。把 export BAT_THEME="GitHub" 新增到 shell 的啟動指令碼來取得永久效果。

除此之外,你還可以自定義輸出樣式,甚至可以自己新增新的語言和語法,輸出讓自己滿意的高亮樣式。但我覺得系統自帶的那些樣式其實已經可以滿足我們大部分需求了,沒必要把時間花在這上面。有興趣的小夥伴可以去看它們的官方文件,有詳細的教程。

4. 小結

bat 命令真的十分強大,簡直是 cat 命令的完美代替品!特別是它的語法高亮、自動翻頁功能,簡直是對 cat 的精準狙殺。

如果你經常檢視文字,那麼可以使用 bat 來替代 cat ,相信我,用完之後你就再也回不來了!


學習程式設計,千萬不要急於求成,一定要多讀一些經典書籍,多看原始碼,多下苦功夫去死磕程式碼,這樣技術才能長進。給大家分享一些程式設計師必讀經典書籍,一定要多讀幾遍:

file

免費送給大家,只求大家金指給我點個贊!

程式設計師必讀經典書單(高畫質PDF版)

有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章

推薦閱讀:

歡迎關注我的部落格:良許Linux教程網,滿滿都是乾貨!

相關文章