catというコマンドはファイルを結合して表示するためのコマンドです。例えばcat file1 file2のように実行するとfile1とfile2の内容が結合されて画面に表示されます。cat file1 file2 > mergedと実行すると、結合された内容がmergedというファイルに書かれます。
catというコマンドは最小インストールされたLinuxホストであっても最初からインストールされていることが多く、結合せずに単体のファイルを指定してファイルの中身を確認する時にもよく使うコマンドです。
GUIがある環境では何らかのテキストエディターやコードエディターを使って開くことが多いですが、ssh接続した環境でファイルを開くときにはcatをよく使います。
catコマンドはそういう意味では便利なのですが、ファイルを開いたときにカラー表示できないのが悩みの種でした。いや、もちろんそういうためのツールでないと言われればそうなのですが、ないものは欲しいと考えるのが人間というものでして、「(catコマンドは軽量で便利だけど、コードのカラーリングをしたいな)」と、常日頃、思っていました。 色々調べたところに最初に見つけたのがccatというものでした。
ccatはカラーリングに対応したcatコマンドで、Golangで実装されています。 基本的にはcatでできることはできて任意のカラーリングでファイルを表示したり、何かのデータをパイプに繋げてccatを実行することで、テキストデータをカラーで表示できます。

ccatの主な使い方は、次のような感じです(ヘルプをそのまま引用)。
Examples: $ ccat FILE1 FILE2 ... $ ccat --bg=dark FILE1 FILE2 ... # dark background $ ccat --html # output html $ ccat -G String="_darkblue_" -G Plaintext="darkred" FILE # set color codes $ ccat --palette # show palette $ ccat # read from standard input $ curl https://raw.githubusercontent.com/jingweno/ccat/master/main.go | ccat
ただこのccatは調べると、「これは良い」、「便利」みたいな記事はたくさんみつかるものの、2015年が最後のリリースで開発は事実上6年前で止まっています。
ccatのおかげでだいぶ目は楽になったのですが、開発が止まっているのが気がかりでした。 そこで同じような実装がないかGitHubを検索したところ、見つけました。それはbatです。 batはRustで書かれたcatのクローンです。設定をすると、Gitコマンドと連携して使うこともできるそうです。 2018年頃から開発されているツールです。
基本の使い方は例えばこのような感じです。基本機能はcatやccatと一緒です。
Examples: $ bat FILE1 FILE2 ... $ bat FILE1 FILE2 > MERGED $ bat -l python main.py #pythonカラーリングでファイルを開く $ bat main.py #標準設定でファイルを表示 $ bat -p main.py #カラーリングだけのプレーン表示 $ bat -H 1:5 main.py #1から5行目までをハイライト表示 $ man bat | bat #マニュアルをbatで開く
デフォルトの設定だと、行数表示されてかつ、開いているファイルが冒頭に表示されるので、これでいいじゃんって感じになりました。catコマンドからはそれますが、ファイル編集もできたらいいのにな...なんて感じました。

1から5行目までをハイライト表示すると、こんな感じです。

batコマンドはRHEL, Rocky, Almaの場合は、EPELリポジトリーが有効だとインストールできます。
sudo dnf install bat
macOSの場合はHomebrewでインストールできます。
brew install bat
今までccatを使っていましたが、気に入ってしまったのでbatに乗り換えてしまいました。 万が一batでできないことがあれば、catを使えばいいですしね。
普段使いのMacでは、コードエディターとしては主にVSCodeを使っていますが、ソースの中身を表示するだけにVSCodeを起動するのは遅いので、そういうときにbatを使おうと思います。CLIで使えるツールの方が、CLIでAI Agentと対話するときに便利ですからね。
Linuxの場合は、自分が管理していてよくファイルのやり取りをするような環境にはbatをインストールしています。 最近のお気に入りです。
