catをより良くしたCLIツール「bat」



LinuxやMacなど、Unix系のOSをコマンドライン上から操作する人、特にSSHを通してリモートサーバーにアクセスする人は "cat" コマンドを使った事がある人も多いのではないでしょうか。

"cat"コマンドは本来 '複数のファイルを1ファイルに連結する' 用途のコマンドですが、ファイルの中身を確認する目的のに使われるほうが多いかもしれません。

cat コマンドには、コードの行数を表示などを始めとする 幾つかのオプションなどが用意されていますが、コードが長いファイルを開く時は「ソースが読み辛い」と感じた人は少なくないかもしれません。

そんな cat の改善したほうが良い点をマッシュアップしたようなコマンドラインツールが「bat」です。
 

bat で出来ること 

- コマンドライン上でファイルを開くとき、ファイルをハイライト表示してくれます

* 'cat'と'bat'でファイルを開いた比較


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 ファイル名' でファイルがシンタックスハイライトされて開かれます。

例えば、bat レポジトリ内の ' README.md ' ファイルを開くとしましょう。batを使うとシンタックスハイライトされ、普段コーディングしているテキストエディタと同じ感覚でファイルの中身を確認できます。

もちろん、行番号もデフォルトで表示され、ファイルを開いた時のキーバインドは Vimを使ったことがある人なら直感的に使えるはずです。

# カレントディレクトリ内のmarkdownファイルを開く
bat README.md
# *batを終了させる場合はキーボードの 'q'

* 'bat' を使って markdownファイルを開いてみました


ファイル名を複数指定すれば、一度に開くことができます。

# 1.md, 2.md, 3.md を一度に開くことを指定
bat 1.md 2.md 3.md

* 一度に3ファイルを開く


また、ワイルドカードを使えば条件にマッチしたファイルを一度に複数開くこともできます。'.json' の設定ファイルを開きたい時などに重宝しそうです。

# ファイル拡張子が '.json' で終わるファイルを開く例
bat *.json


本来の 'cat' コマンドの使用用途である "ファイルを連結" させることも可能です。
ファイルを連結させる場合は ファイル名の後に ' > ' を使います。SSLの証明書を連結させる状況にも問題なく使用できます。

# 1.md 2.md 3.md ファイルを連結して result.mdファイルを作成
bat 1.md 2.md 3.md > result.md

* bat でファイルを連結


Summary

上記で紹介した意外にもWindowsに導入する方法や、シンタックスハイライトのテーマ変更、設定ファイルの定義など、公式レポジトリに日本語のドキュメントが用意されています。

リモートサーバーに bat を導入すれば、役立つこと間違いなしのCLIツールです。

GitHub : sharkdp/bat

 

この記事のカテゴリ
プログラミング

この記事に付けられているタグ