LinuxやMacなど、Unix系のOSをコマンドライン上から操作する人、特にSSHを通してリモートサーバーにアクセスする人は "cat
" コマンドを使った事がある人も多いのではないでしょうか。
"cat
"コマンドは本来 '複数のファイルを1ファイルに連結する' 用途のコマンドですが、ファイルの中身を確認する目的のに使われるほうが多いかもしれません。
cat コマンドには、コードの行数を表示などを始めとする 幾つかのオプションなどが用意されていますが、コードが長いファイルを開く時は「ソースが読み辛い」と感じた人は少なくないかもしれません。
そんな cat の改善したほうが良い点をマッシュアップしたようなコマンドラインツールが「bat」です。
- コマンドライン上でファイルを開くとき、ファイルをハイライト表示してくれます
cat
'と'bat
'でファイルを開いた比較 
bat は多くのUnix系ディストリビューションをサポートしています。
# mac
brew install bat
# ubuntu
curl -LJO https://github.com/sharkdp/bat/releases/download/v0.9.0/bat_0.9.0_amd64.deb
sudo dpkg -i bat_0.9.0_amd64.deb
Centos などの Rethat系のディストリビューションにも導入ができます。
# centos など
wget -O bat.zip https://github.com/sharkdp/bat/releases/download/v0.9.0/bat-v0.9.0-x86_64-unknown-linux-musl.tar.gz
tar -xvzf bat.zip -C /usr/local
mv /usr/local/bat-v0.9.0-x86_64-unknown-linux-musl/ /usr/local/bat
# 上記のコマンドを実行し終えたら '.bashrc' 又は '.zshrc'に 下記のaliasを追加
alias bat='/usr/local/bat/bat'
使い方は コマンドライン上から 'bat ファイル名
' でファイルがシンタックスハイライトされて開かれます。
例えば、bat レポジトリ内の ' README.md
' ファイルを開くとしましょう。batを使うとシンタックスハイライトされ、普段コーディングしているテキストエディタと同じ感覚でファイルの中身を確認できます。
もちろん、行番号もデフォルトで表示され、ファイルを開いた時のキーバインドは Vimを使ったことがある人なら直感的に使えるはずです。
# カレントディレクトリ内のmarkdownファイルを開く
bat README.md
# *batを終了させる場合はキーボードの 'q'

ファイル名を複数指定すれば、一度に開くことができます。
# 1.md, 2.md, 3.md を一度に開くことを指定
bat 1.md 2.md 3.md

また、ワイルドカードを使えば条件にマッチしたファイルを一度に複数開くこともできます。'.json' の設定ファイルを開きたい時などに重宝しそうです。
# ファイル拡張子が '.json' で終わるファイルを開く例
bat *.json
本来の 'cat
' コマンドの使用用途である "ファイルを連結" させることも可能です。
ファイルを連結させる場合は ファイル名の後に ' >
' を使います。SSLの証明書を連結させる状況にも問題なく使用できます。
# 1.md 2.md 3.md ファイルを連結して result.mdファイルを作成
bat 1.md 2.md 3.md > result.md

上記で紹介した意外にもWindowsに導入する方法や、シンタックスハイライトのテーマ変更、設定ファイルの定義など、公式レポジトリに日本語のドキュメントが用意されています。
リモートサーバーに bat を導入すれば、役立つこと間違いなしのCLIツールです。
GitHub : sharkdp/bat