what's the bat
工作中使用 cat
的頻率較高,主要用於顯示文本文件的具體內容。
但 cat
命令兩個很重大的缺陷:
- 不能語法高亮輸出
- 文本太長的話無法翻頁輸出。
所以 cat
一般只用來查看行數不多的小文件,大文件需要用到 head、tail
等命令。
國外有大牛將 cat
命令進行了增強,開發了更好用的 bat
命令。
bat
主要功能:
- 語法高亮——支持根據編程語言以及 markdown 語法將文本關鍵詞高亮,可閱讀性大大增強;
- 自動翻頁——如果文本內容太長,超過一頁的話,它會自動將內容通過管道傳到
less
命令,實現翻頁的效果; - 集成Git——
bat
命令跟 git 完美結合,將文本的修改部分在左側展示,一眼就可以看出文件修改了啥。 - 顯示不可打印字符——有些字符無法通過
cat
在屏幕上顯示
安裝
sudo apt-get install bat
這裏要注意一下,由於名稱的衝突,在 Ubuntu 下無法直接通過敲 bat 這三個字母運行 bat
命令,而是需要敲 batcat
。爲了方便,可以設置別名
alias "bat=batcat"
使用方法
基本使用
bat
命令的用法跟 cat
基本相同,除了輸出與 cat
一樣的文本內容之外,還能輸出包括行數、文件名、表格外框等元素。如果行數比較多,還可以使用 --line-range
來顯示指定行數的內容
語法高亮
bat
對大部分編程語言和標記語言提供語法高亮,可讀性更強。
查看所有支持的語言
bat --list-languages
Git 集成
bat
能從 git 中獲取文件的修改並展示在邊欄
顯示不可打印字符
有時候文本里有一些不可顯示的字符,如果使用 cat
命令查看的話,將看不到這些字符。但如果使用 bat
命令,加上 -A
或者 -show-all
參數就能看到。
bat -A xxx.txt
自動翻頁功能
cat
命令不管文本大小全部顯示出來,使得在需要查看內容比較多的文本文件的時候,必須選擇其它命令(比如 more
、less
等等)。
bat
命令在文本內容超過一屏可顯示範圍時,就會將其發送到 less
命令,然後就可以像使用 less
一樣進行翻頁操作。如果不想使用翻頁功能,可以使用 --paging=never
參數關閉。
主題定製
bat
命令支持多種風格的語法高亮主題,可以滿足大部分需求。
查看 bat
支持的所有主題
bat --list-themes
如果想指定主題爲 GitHub
,可以使用以下命令
bat --theme=GitHub 文件名
但這樣做是臨時的,關閉終端工具或者系統重啓,主題就會恢復默認。可以通過設置 BAT_THEME
環境變量來選定主題。
把 export BAT_THEME="GitHub"
添加到 shell 的啓動腳本來取得永久效果。除此之外,還可以自定義輸出樣式,甚至可以自己添加新的語言和語法,輸出讓自己滿意的高亮樣式。