ターミナルでの開発作業において、誰もが毎日欠かさず叩くコマンド、それが cat です。しかし、標準の cat は単にファイルの中身を流し出すだけで、構文の強調(シンタックスハイライト)も行番号もなく、少し味気ないと感じたことはないでしょうか?
そんな CLI 生活を劇的にモダンにする Rust 製の代替ツールが 「bat」 です。「Cat with wings(翼の生えた cat)」を掲げるこのツールは、美しさと実用性を兼ね備えた、全開発者必携のコマンドです。
本記事では、Mac と Ubuntu へのインストールから、知っておくと便利な設定・活用術までを徹底解説します。
1. bat がもたらす 3 つの革命
標準の cat と比較して、bat には以下の大きな強みがあります。
- 美しいシンタックスハイライト: 数多くのプログラミング言語やマークアップ言語を自動判別し、エディタのような色付けを行います。
- Git との深い連携: 左端のサイドバーに Git の変更ステータス(追加・変更・削除)が視覚的に表示されます。
- インテリジェントなページャ機能: ファイルが長い場合は自動的に
lessのようなページャで開き、短い場合はそのまま出力します。
2. インストール手順
macOS (Homebrew)
Mac ユーザーなら、Homebrew を使って一瞬で導入可能です。
brew install bat
Ubuntu / Debian 系
Ubuntu などの Debian 系ディストリビューションでは apt でインストールできます。
sudo apt update
sudo apt install bat
【重要】Ubuntu での「batcat」問題
Ubuntu では、別パッケージとの名前衝突を避けるため、実行コマンド名が batcat になっている場合があります。
「bat と打ちたいのに動かない!」という場合は、以下の設定でシンボリックリンクを作成するか、エイリアスを設定するのがプロの「理詰め」な解決法です。
シンボリックリンクを貼る方法(推奨):
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat
※ ~/.local/bin にパスが通っていることを確認してください。
3. 設定ファイルで自分好みにカスタマイズ
bat の真価はカスタマイズ性にあります。デフォルトでは満足できないこだわり派の方は、設定ファイルをいじりましょう。
設定ファイルの場所を確認
bat --config-file
# 一般的には ~/.config/bat/config
おすすめの基本設定
設定ファイルに以下のようなオプションを記述しておくと、毎回フラグを立てる必要がなくなります。
# テーマを Dracula に変更(--list-themes で一覧確認可能)
--theme="Dracula"
# 行番号や Git 差分など、すべての装飾を表示
--style="full"
# イタリック体を使用する
--italic-text=always
4. 開発効率をブーストする「便利な使い方」
単なる cat の代わりとして使うだけではもったいない!bat は他の CLI ツールと組み合わせることで真価を発揮します。
① Git 差分のプレビュー
git diff をカラーで見やすく表示できます。
git diff | bat
② tail -f の強化版
ログファイルをリアルタイム監視しつつ、シンタックスハイライトを効かせることができます。
tail -f /var/log/syslog | bat --paging=never -l log
③ fzf のプレビューウィンドウに統合
これが最強の組み合わせです。ファイル選択ツール fzf の横で、ファイルの中身を bat で爆速プレビューします。
fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'
④ batman (Man ページのカラー化)
bat-extras というスクリプト群を導入すると、man ページ(マニュアル)を bat 経由でカラー表示する batman コマンドが使えるようになります。視認性が爆上がりします。
💡 まとめ:CLI はもっと楽しくなる
bat は、単なる「表示ツール」を超えて、ターミナルでのコードリーディングを格段に快適にするツールです。特に Rust 製ならではの高速な動作は、日々の開発リズムを乱しません。
まずは alias cat='bat' をシェルの設定ファイル(.zshrc や .bashrc)に書き込むところから始めてみてください。きっと、もう普通の cat には戻れなくなるはずです。

コメント