batの使い方完全ガイド【インストールから応用まで】
開発現場で日常的に使うコマンドの一つにcatがあります。ファイルの内容を手早く確認する際に便利です。しかし、ソースコードや設定ファイルをcatで表示すると、少し物足りなさを感じることはありませんか?
例えば、複雑なスクリプトの中身を読み解く時を想像してみてください。色分けされたシンタックスハイライトがなければ、コードの構造を把握するのは一苦労です。どの行にどんな意味があるのか、視覚的に判別しにくいでしょう。
また、Gitで管理しているプロジェクトで、変更を加えたファイルをcatで表示しても、どの行が変更されたのかは分かりません。変更前後の差分を別のコマンドで確認する手間が発生します。
このような状況で、あなたの開発体験を格段に向上させるツールがbatです。batを導入すれば、ファイルの内容が美しく色付けされ、行番号も表示されます。さらに、Gitの変更点も一目で把握できるようになります。
ファイルの内容を「見る」行為が、batによって「理解する」行為へと変わります。開発の効率と楽しさを両立させるbatの世界へ、ようこそ。
batとは
batは、CLIツールの一つで、「catコマンドの現代版」と称されます。Rust言語で開発されており、高速かつ高機能なファイルビューアです。
その誕生の背景には、既存のcatコマンドが提供しない、よりリッチな表示機能へのニーズがありました。開発者がコードや設定ファイルをより効率的に、そして快適に閲覧できるようにするため、batは生まれました。
batの主な特徴は以下の通りです。
- シンタックスハイライト: 多くのプログラミング言語やマークアップ言語に対応し、コードを色鮮やかに表示します。
- 行番号表示: ファイルの各行に行番号を付与し、特定の行を参照しやすくします。
- Git統合: Gitで管理されているファイルの変更箇所を、サイドバーに表示します。
- 自動ページング: 出力内容が画面に収まらない場合、自動的にページャー(
lessなど)を介して表示します。
これらの機能により、batは単なるファイル表示ツール以上の価値を提供します。開発者の視覚的な理解を深め、作業効率を高める強力な味方となるでしょう。
インストール方法
batのインストールは、お使いのOSに応じて様々な方法があります。ここでは、主要なOSでのインストールコマンドを紹介します。
macOS
macOSでは、Homebrewを使って簡単にインストールできます。
brew install bat
Linux
Linuxディストリビューションによってコマンドが異なります。
Debian/Ubuntu系
APTパッケージマネージャーを使用します。
sudo apt install bat
Fedora/CentOS系
DNFパッケージマネージャーを使用します。
sudo dnf install bat
Arch Linux系
Pacmanパッケージマネージャーを使用します。
sudo pacman -S bat
Windows
Windowsでは、Scoopやwinget、またはCargo(Rustのパッケージマネージャー)を利用できます。
Scoopを使用する場合
scoop install bat
wingetを使用する場合
winget install sharkdp.bat
Cargoを使用する場合(Rustがインストールされている前提)
cargo install bat
上記いずれかの方法でbatをインストール後、ターミナルで以下のコマンドを実行し、バージョン情報が表示されれば成功です。
bat --version
基本的な使い方
batの基本的なコマンドは非常にシンプルです。まずは、最低限これだけ知っていれば使えるコマンドを3〜5個紹介します。
1. 単一ファイルの表示
最も基本的な使い方は、ファイル名を引数として指定することです。例えば、README.mdというファイルの内容を表示する場合です。
bat README.md
このコマンドを実行すると、README.mdファイルの内容がシンタックスハイライトされ、行番号やGitの変更情報とともに表示されます。
2. 複数ファイルの表示
複数のファイルを一度に表示することも可能です。例えば、カレントディレクトリにある全てのRustファイルをまとめて表示したい場合です。
bat src/*.rs
複数のファイルが指定された場合、それぞれのファイルが区切り線と共に順番に表示されます。
3. 標準入力の表示
batはパイプ(|)を使って、他のコマンドの出力を受け取ることができます。例えば、curlで取得したスクリプトの内容を直接batで表示する場合です。
curl -s https://sh.rustup.rs | bat
この時、batは内容から自動的に言語を判別し、適切なシンタックスハイライトを適用します。
4. 言語を明示して標準入力を表示
自動判別が難しい場合や、特定の言語でハイライトしたい場合は、-l(--language)オプションで言語を指定できます。例えば、YAMLをJSONに変換し、そのJSONをjsonとしてハイライトして表示する例です。
yaml2json .travis.yml | json_pp | bat -l json
これにより、正確なシンタックスハイライトが適用され、内容がより読みやすくなります。
5. catの代替としての利用
batはcatコマンドの代替としても利用できます。例えば、複数のファイルを連結して新しいファイルを作成する場合です。
bat header.md content.md footer.md > document.md
また、-n(--number)オプションを使えば、ファイルの内容を行番号のみで表示できます。これは、cat -nと似た動作です。
bat -n main.rs
これらの基本的な使い方をマスターするだけで、batの便利さをすぐに実感できるでしょう。
便利な使い方・応用例 3選
batは基本的なファイル表示だけでなく、開発シーンで役立つ多くの応用機能を持っています。ここでは、特に便利な3つの使い方を紹介します。
1. Gitの変更箇所の視覚化
batの強力な機能の一つがGit統合です。Gitリポジトリ内のファイルをbatで表示すると、未コミットの変更箇所がサイドバーに表示されます。
- 追加された行: 緑色の
+記号で表示されます。 - 変更された行: 黄色の
~記号で表示されます。
例えば、現在作業中のファイルをbatで開いてみましょう。
bat src/main.rs
このコマンドを実行すると、src/main.rsファイルの内容が表示されます。もしファイルに未コミットの変更があれば、行番号の左側に+や~のマークが現れるでしょう。これにより、どのコードブロックが変更されたのかが、一目で直感的に把握できます。
変更の確認のためにgit diffを実行する必要が減り、開発フローがスムーズになります。
2. テーマの変更と永続化
batは複数のカラースキーム(テーマ)をサポートしています。好みに合わせてテーマを変更することで、より快適な閲覧環境を構築できます。
まず、利用可能なテーマの一覧を確認します。
bat --list-themes
このコマンドを実行すると、GitHubやTwoDark、Draculaなど、多くのテーマ名が表示されます。
特定のテーマを一時的に適用するには、--themeオプションを使用します。例えば、TwoDarkテーマを適用してファイルを表示する場合です。
bat --theme=TwoDark src/main.rs
この設定を永続化したい場合は、環境変数BAT_THEMEを設定します。.bashrcや.zshrcなどのシェル設定ファイルに以下の行を追加してください。
# .bashrc または .zshrc に追加
export BAT_THEME="TwoDark"
設定を保存後、シェルを再起動するか、sourceコマンドで設定ファイルを再読み込みすると、以降は指定したテーマがデフォルトで適用されます。
3. 非印刷文字の表示
デバッグ時や、ファイルの内容に予期せぬ空白文字が含まれているか確認したい時に役立つのが、非印刷文字の表示機能です。-A(--show-all)オプションを使用します。
bat -A /etc/hosts
このコマンドを実行すると、タブ(\t)、スペース(·)、改行($)などの非印刷文字が可視化されます。これにより、目には見えない文字が原因で発生する問題を特定しやすくなります。
例えば、設定ファイルでインデントがスペースとタブで混在している場合など、見た目では分かりにくい差異を明確に表示できます。
これらの応用例を活用することで、batはあなたの開発作業において、強力な視覚的サポートを提供してくれるでしょう。
他ツールとの組み合わせ
batは単体でも強力ですが、他のCLIツールと組み合わせることで、その真価をさらに発揮します。ここでは、相性の良いツールと具体的な組み合わせ方を紹介します。
1. fzfとの連携
fzfは、強力なインタラクティブフィルターです。fzfのプレビュー機能にbatを組み合わせることで、ファイルを高速に検索しながら内容をハイライト表示できます。
以下のコマンドを~/.bashrcや~/.zshrcなどに追加することで、fzfでファイルを選択する際にbatでプレビュー表示されるようになります。
export FZF_DEFAULT_OPTS="--preview 'bat --color=always --style=numbers --line-range=:500 {}'"
--color=always:batに常にカラー出力を強制します。--style=numbers: 行番号を表示します。--line-range=:500: 長いファイルでも最初の500行のみをプレビューし、高速化します。
この設定により、fzfでファイルを検索するたびに、美しいシンタックスハイライト付きで内容を確認できるようになります。
2. findやfdとの連携
findやfd(findの高速版)は、ファイル検索コマンドです。これらの検索結果をbatでまとめて表示できます。
findの場合
findコマンドの-execオプションを使用します。
find . -name "*.js" -exec bat {} +
このコマンドは、カレントディレクトリ以下の全ての.jsファイルを検索し、その結果をまとめてbatで表示します。
fdの場合
fdコマンドの-X(--exec-batch)オプションを使用します。
fd .js -X bat
fdはデフォルトでGit管理外のファイルを無視するなど、findよりも賢い動作をします。検索したJavaScriptファイルをまとめてbatで表示する例です。
3. tail -fとの連携
tail -fは、ファイルの末尾をリアルタイムで監視するコマンドです。これにbatを組み合わせることで、ログファイルなどをシンタックスハイライト付きで監視できます。
tail -f /var/log/syslog | bat --paging=never -l log
--paging=never:batの自動ページング機能を無効にします。tail -fと組み合わせる場合、これが必須です。-l log: ログファイルとしてハイライトするよう明示的に指定します。自動判別が難しい場合に有効です。
これにより、システムログなどの更新が、色付きでリアルタイムにターミナルに表示されます。問題発生時の原因特定に役立つでしょう。
4. git showとの連携
git showコマンドは、過去のコミットやブランチの特定のファイル内容を表示できます。これにbatを組み合わせることで、過去のコードをシンタックスハイライト付きで確認できます。
git show HEAD~1:src/main.rs | bat -l rs
このコマンドは、現在のコミットの1つ前のコミットにあるsrc/main.rsファイルの内容を、Rust言語としてハイライトして表示します。過去の変更履歴を追う際に非常に便利です。
これらの連携を使いこなすことで、batはあなたの開発ワークフローの中心的なツールとなるでしょう。
よくある設定・カスタマイズ
batをより快適に利用するために、いくつかの設定やカスタマイズが可能です。dotfilesに設定を記述することで、これらの設定を永続化できます。
1. catコマンドのエイリアス設定
多くの開発者が行っているのが、catコマンドをbatに置き換えるエイリアス設定です。これにより、普段通りcatと入力するだけでbatの機能が利用できるようになります。
.bashrcや.zshrcなどのシェル設定ファイルに、以下の行を追加します。
# .bashrc または .zshrc に追加
alias cat='bat --paging=never'
--paging=never:catコマンドのデフォルト動作(ページングなしで全て表示)を模倣するため、batの自動ページングを無効にします。
この設定により、catを使う習慣をそのままに、batの恩恵を受けられます。
2. テーマの永続化
前述の通り、BAT_THEME環境変数を設定することで、デフォルトのテーマを永続化できます。
# .bashrc または .zshrc に追加
export BAT_THEME="GitHub" # お好みのテーマ名に置き換えてください
これにより、batを実行するたびに、指定したテーマでファイルが表示されます。
3. スタイルのカスタマイズ
batは表示スタイルを細かくカスタマイズできます。例えば、行番号、Gitの変更、ファイルヘッダー、グリッド線など、表示する要素を選択できます。
一時的にスタイルを変更するには、--styleオプションを使用します。
bat --style=full main.rs
fullは、grid,numbers,changes,header,snipの全てのスタイルを表示するショートカットです。個別に指定することもできます。
bat --style=grid,numbers,changes main.rs
これらのスタイル設定を永続化するには、batの設定ファイルを利用します。
設定ファイルの生成と編集
batの公式設定ファイルを生成し、編集することができます。
bat --generate-config-file
このコマンドを実行すると、通常は~/.config/bat/configに設定ファイルのテンプレートが生成されます。このファイルを開き、以下の行を追記または変更します。
# ~/.config/bat/config に追記または変更
--theme="TwoDark"
--style="grid,numbers,changes,header"
これにより、batを実行するたびに、指定したテーマとスタイルが適用されます。
4. 言語エイリアスの設定
特定の拡張子に対して、デフォルトとは異なる言語ハイライトを適用したい場合があります。例えば、.logファイルをlogとしてハイライトしたい場合などです。
設定ファイル(~/.config/bat/config)に以下のように記述します。
# ~/.config/bat/config に追記
--map-syntax "*.log:Log"
この設定により、.log拡張子のファイルが自動的にLog言語としてハイライトされるようになります。
これらのカスタマイズを施すことで、batはあなたの開発環境に深く溶け込み、よりパーソナルで快適なファイルビューアとなるでしょう。
今日からできる実行プラン
batを今日からあなたの開発ワークフローに取り入れるための3ステップを紹介します。
ステップ1: batをインストールする
まずは、お使いのOSに合った方法でbatをインストールしましょう。インストールコマンドは「インストール方法」のセクションを参照してください。
例えばmacOSなら、以下のコマンドを実行します。
brew install bat
インストールが完了したら、bat --versionを実行して正しくインストールされたか確認してください。
ステップ2: batでファイルを閲覧する
インストールが完了したら、早速batを使ってファイルの内容を表示してみましょう。まずは、プロジェクト内のソースコードや設定ファイルをいくつか開いてみてください。
bat your_project/src/main.rs
bat your_project/config/settings.yaml
シンタックスハイライト、行番号、Git変更点の表示など、batが提供する視覚的な情報を体験してみてください。この体験が、batの導入効果を実感する第一歩となります。
ステップ3: catコマンドをbatに置き換える
batの便利さを実感したら、日常的に使うcatコマンドをbatに置き換えるエイリアス設定を行いましょう。これにより、無意識のうちにbatの恩恵を受けられるようになります。
お使いのシェルの設定ファイル(.bashrcや.zshrcなど)を開き、以下のエイリアスを追加してください。
alias cat='bat --paging=never'
設定ファイルを保存したら、シェルを再起動するか、source ~/.bashrc(または.zshrc)を実行して設定を反映させます。
これで、今日からあなたはbatのある快適な開発環境を手に入れることができました。ファイルの内容をより深く、そして美しく理解し、開発効率を向上させていきましょう。
参考文献
- Bat: The Correct Version of Cat
- What's bat do? (I'm on board with you on fd and rg)
- Get to know bat in linux, the syntax highlighting cat
- sharkdp/bat - GitHub