CLIツール
sharkdp/bat avatar
sharkdp/bat

batをcatの代わりに使うとき、端末表示で確認したいこと

翼を持った猫(1)のクローン。 git および diff 操作のさらなるサポートを探している場合は、delta をチェックしてください。

スター 60,450フォーク 1,648RustApache-2.0
GitHub

ひと目でわかる

これは何?
sharkdp/batはRust製のcat(1)クローンで、構文ハイライト、Gitの変更表示、ページャを端末向けにまとめる。パイプ時の挙動と設定ファイルの扱いが採用判断の境界になる。
誰に向いている?
batはソースコードや設定ファイルを端末で読み、Gitの変更位置も同時に見たい開発者に向いています。単純なバイト列出力だけが必要なスクリプトではcatのほうが境界が明確です。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 11 日前です。
何の言語で書かれている?
主に Rust です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

構文ハイライトとGit統合を備えたcatクローン

batはRustで書かれたコマンドラインツールで、cat(1)を再実装し、2つの追加機能を持つ。多数のプログラミング言語とマークアップ言語の構文ハイライト、そしてインデックスに対する変更を表示するGit統合である。リポジトリの説明文では、自身を翼を持つcat(1)クローンと称している。リポジトリのメタデータによると、スター数は60,098、フォーク数は1,619、オープン中のissueは421件で、デフォルトブランチはmaster、アーカイブはされていない。

ページングと連結の動作

デフォルトでは、出力が1画面を超える場合、batは自分の出力をlessなどのページャにパイプする。常にcatのように動作させたい場合は、コマンドラインまたは設定ファイルで--paging=neverを設定する。READMEはalias cat='bat --paging=never'を提案している。batが非対話型ターミナルを検出した場合、つまり出力が別のプロセスやファイルにパイプされる場合、ページャの設定に関係なくプレーンなファイル内容を出力するため、ファイルの連結は引き続き機能する。-A/--show-allオプションは非表示文字を表示してハイライトする。

パイプの前後で表示が変わる点は、batをシェル関数やCIログへ組み込むときの境界です。対話端末ではページャと色が見えますが、ファイルへリダイレクトした結果は同じ見た目とは限りません。

使用例と文書化された統合

基本的な使い方は、単一ファイル(bat README.md)、複数ファイル(bat src/*.rs)、標準入力からの読み取り(最初の行、通常はshebangから構文を自動判定)をカバーする。READMEは他のツールとの統合を文書化している。batは--color=alwaysと--line-rangeを指定してfzfのプレビューアとして使え、findの-execやfdの-Xと組み合わせられ、batgrepラッパーを通じてripgrepの検索結果を表示でき、tail -fと組み合わせてログ監視にも使える(その場合は構文を明示指定する)。--language=helpを使えば--helpメッセージに色を付けられ、git showやgit diffと組み合わせて過去のファイルを表示する方法も示されている。

各プラットフォームでのインストール

インストール方法は複数のプラットフォームで文書化されている。UbuntuとDebianはapt、Alpineはapk、Archはpacman、Fedoraはdnf、Gentooはemerge、FreeBSDはpkg、OpenBSDはpkg_add、openSUSEはzypper、Nixはnix-env、macOSはHomebrewとMacPorts、WindowsはWinGet、Chocolatey、Scoopである。一部の古いUbuntuまたはDebianリリースでは、別のパッケージとの名前の衝突により、実行ファイル名がbatcatになる。READMEは推奨されるsnapパッケージは現在ないと述べている。ソースからビルドするにはRust 1.79.0以降が必要で、ローカルソースはcargo install --path . --locked、crates.ioからはcargo install --locked batでインストールする。どちらの方法でもmanページとシェル補完ファイルは自動インストールされない。

テーマ、スタイル、カスタム構文

テーマは中心的なカスタマイズポイントだ。bat --list-themesで利用可能なテーマを一覧表示する。デフォルトはダーク背景用のMonokai Extendedとライト背景用のMonokai Extended Lightで、BAT_THEME環境変数や設定ファイルで変更できる。3つの8ビットテーマ(ansi、base16、base16-256)は常に制限されたパレットを使い、最大限の互換性を確保する。--styleオプションはnumbers、changes、grid、header-filename、snipなどの出力コンポーネントを制御し、定義済みスタイルはdefault、full、auto、plain。ユーザーは設定ディレクトリのsyntaxesフォルダに.sublime-syntaxファイルを置いてbat cache --buildを実行することで構文を追加でき、同様に.tmThemeテーマを追加し、--map-syntaxでファイルパターンを言語にマッピングできる。

設定ファイルとWindowsの注意点

設定ファイルはコマンドライン引数のリストで、1行に1つの引数、#で始まる行はコメントだ。bat --config-fileでデフォルトのパスを表示し、--generate-config-fileでデフォルトファイルを生成し、BAT_CONFIG_PATHまたはBAT_CONFIG_DIRで場所を変更できる。システム全体の設定ファイルはLinuxとmacOSでは/etc/bat/config、WindowsではC:\ProgramData\bat\configにある。Windowsではbatはほぼそのまま動作するが、内蔵のmoreページャは機能が限られている。READMEはlessのインストールを推奨し、Windows 10はv1511以降ネイティブで色をサポートし、Cygwinのunixスタイルのパスはネイティブサポートされないと述べている。文字化け出力には--strip-ansiでANSIエスケープシーケンスを除去でき、--sanitizeはターミナルで動作する制御バイトとUnicode双方向文字を置換文字に置き換える。

開発目標とライセンスの主張

READMEは4つのプロジェクト目標を挙げている。美しい高度な構文ハイライト、Git統合、POSIX catのドロップイン代替、使いやすいコマンドラインインターフェースだ。類似プログラムとの比較はdoc/alternatives.mdを参照としている。メンテナーは4名が記載されている。READMEはbatがMITライセンスまたはApache License 2.0のいずれかを選択して提供されると述べ、LICENSE-APACHEとLICENSE-MITファイルを参照している。ただし、本記事で提供されたライセンス抜粋にはライセンス本文が含まれておらず、一般的なパスにLICENSEファイルが見つからなかったとだけ記載されているため、実際の許諾条件を引用することはできない。

編集部の結論

batはソースコードや設定ファイルを端末で読み、Gitの変更位置も同時に見たい開発者に向いています。単純なバイト列出力だけが必要なスクリプトではcatのほうが境界が明確です。最初にbat README.md、bat --paging=never、bat -Aの出力を比較し、非対話出力が期待したプレーンテキストになることを確認してください。

公式情報源

  1. Official README
  2. Project repository
  3. Release notes
コミュニティノート

コミュニティノート