比Cat更好用的命令!
作為程序員,大家一定對(duì) cat 這個(gè)命令不陌生。它主要的功能就是用來(lái)顯示文本文件的具體內(nèi)容。
但 cat 命令兩個(gè)很重大的缺陷:
- 不能語(yǔ)法高亮輸出;
- 文本太長(zhǎng)的話無(wú)法翻頁(yè)輸出。
正是這兩個(gè)不足,使得 cat 只能用來(lái)查看行數(shù)不多的小文件。
為了解決 cat 命令這兩個(gè)缺點(diǎn),國(guó)外有大牛將 cat 命令進(jìn)行了增強(qiáng),強(qiáng)大到連 cat 親媽都不認(rèn)識(shí)!
它就是本文的主角:bat 命令。
bat 命令可以用來(lái)做啥呢?簡(jiǎn)單來(lái)說(shuō)有下面這些:
- 語(yǔ)法高亮。它可以根據(jù)編程語(yǔ)言以及 markdown 語(yǔ)法將文本關(guān)鍵詞高亮,可閱讀性大大增強(qiáng);
- 自動(dòng)翻頁(yè)。如果文本內(nèi)容太長(zhǎng),超過(guò)一頁(yè)的話,它會(huì)自動(dòng)將內(nèi)容通過(guò)管道傳到 less 命令,實(shí)現(xiàn)翻頁(yè)的效果;
- 集成Git。bat 命令跟 git 完美結(jié)合,將文本的修改部分在左側(cè)展示,一眼就可以看出文件修改了啥。
- 顯示不可打印字符。有些字符無(wú)法通過(guò) cat 在屏幕上顯示,但 bat 讓它們無(wú)處遁形!
bat 的這些特性,真的是分分鐘讓 cat 打下神壇!(怪不得人家是以 b 開(kāi)頭的,牛 B 的 B !)
一、bat命令的安裝
現(xiàn)在很多 Linux 發(fā)行版的官方源已經(jīng)內(nèi)置了這個(gè)命令,所以只需使用它們對(duì)應(yīng)的安裝工具就可以安裝。
以 Ubuntu 為例,只需要運(yùn)行以下命令就可以安裝 bat :
$ sudo apt-get install bat
這里要注意一下,由于名稱(chēng)的沖突,在 Ubuntu 下無(wú)法直接通過(guò)敲 bat 這三個(gè)字母運(yùn)行 bat 命令,而是需要敲 batcat 。為了方便,我們可以設(shè)置別名:
$ alias "bat=batcat"
二、bat命令的使用
1. 基本使用
bat 命令的用法跟 cat 大差不差的,我們直接上圖來(lái)看下對(duì)比。
可以看到,bat 命令除了輸出與 cat 一樣的文本內(nèi)容之外,還輸出了包括行數(shù)、文件名、表格外框等元素,看起來(lái)信息會(huì)更多。
如果行數(shù)比較多,還可以使用 --line-range 來(lái)顯示指定行數(shù)的內(nèi)容。
而且,它還可以跟其它命令通過(guò)管道一起結(jié)合著用:
2. 語(yǔ)法高亮
bat 對(duì)大部分編程語(yǔ)言和標(biāo)記語(yǔ)言提供語(yǔ)法高亮,這樣閱讀起來(lái)就更方便了,可讀性更強(qiáng)。
而且,你還可以通過(guò)使用 --list-languages 參數(shù)來(lái)顯示所有支持的語(yǔ)言:
3. Git 集成
bat 能從 git 中獲取文件的修改并展示在邊欄(見(jiàn)下圖):
4. 顯示不可打印字符
有時(shí)候文本里有一些不可顯示的字符,如果使用 cat 命令查看的話,將看不到這些字符。但如果使用 bat 命令,這些字符就無(wú)處遁形。這里需要加上 -A/--show-all 參數(shù)。
5. 自動(dòng)翻頁(yè)功能
這應(yīng)該是直戳 cat 命令痛點(diǎn)的功能。
由于 cat 命令不管文本長(zhǎng)度如何,全部一股腦就給你顯示出來(lái),使得我們需要查看內(nèi)容比較多的文本文件的時(shí)候,必須選擇其它命令(比如 more 、less 等等)。
bat 命令很明顯是沖著這個(gè)痛點(diǎn)來(lái)的。它在文本內(nèi)容超過(guò)一屏可顯示范圍時(shí),就會(huì)將其發(fā)送到 less 命令,然后我們就可以像使用 less 一樣進(jìn)行翻頁(yè)操作,非常方便。
當(dāng)然,如果你想不使用翻頁(yè)功能的話,也可以使用 --paging=never 參數(shù)來(lái)關(guān)閉這個(gè)功能。但我估計(jì)沒(méi)人這么做。
三、主題定制
bat 命令支持多種風(fēng)格的語(yǔ)法高亮主題,可以滿足大部分程序員的需求??梢允褂孟铝忻畈榭?bat 支持的所有主題:
$ bat --list-themes
如果你想指定主題為 GitHub ,那么可以使用以下命令:
$ bat --theme=GitHub 文件名
但這樣做是臨時(shí)的,當(dāng)你關(guān)閉終端工具,或者系統(tǒng)重啟,主題就會(huì)恢復(fù)默認(rèn)。
可以通過(guò)設(shè)置 BAT_THEME 環(huán)境變量來(lái)選定主題。把 export BAT_THEME="GitHub" 添加到 shell 的啟動(dòng)腳本來(lái)取得永久效果。
除此之外,你還可以自定義輸出樣式,甚至可以自己添加新的語(yǔ)言和語(yǔ)法,輸出讓自己滿意的高亮樣式。但我覺(jué)得系統(tǒng)自帶的那些樣式其實(shí)已經(jīng)可以滿足我們大部分需求了,沒(méi)必要把時(shí)間花在這上面。
四、小結(jié)
bat 命令真的十分強(qiáng)大,簡(jiǎn)直是 cat 命令的完美代替品!特別是它的語(yǔ)法高亮、自動(dòng)翻頁(yè)功能,簡(jiǎn)直是對(duì) cat 的精準(zhǔn)狙殺。
如果你經(jīng)常查看文本,那么可以使用 bat 來(lái)替代 cat ,相信我,用完之后你就再也回不來(lái)了!