😽

コマンド紹介シリーズ:bat

に公開

コマンド紹介シリーズ第3回は、batというコマンドを紹介します。batを使うとシンタックスハイライトを用いた画面表示やgitとの連携などを行うことができます。

なお、第2回は以下になりますので、ぜひご興味があればご覧ください。

https://zenn.dev/akasan/articles/dd94771d828ec7

batとは?

batは公式の説明によると、

シンタックスハイライトとGitとの連携機能付きの cat(1) クローン。

ということです。catはファイル内容を表示したり新しいファイルを作ったりできるコマンドですが、それを拡張したものであると言えます。catではシンタックスハイライトなどがなくプレーンテキストとして画面表示されますが、batでは最初からハイライトが適用されるため、コードの確認がとてもしやすくなります。またbatはcatから派生しているプロジェクトであるため、catでできる機能については網羅しています。本記事ではcatでできる内容については省略しますが、catで使い慣れていてもう少し機能拡張したい場合にbatの検討をしてもらえるような情報をまとめようと思います。

https://github.com/sharkdp/bat

使ってみる

インストール

私はmacbookを使っているので、以下のコマンドでインストールできました。

brew install bat

他のインストール方法もありますので、以下からご自身の環境に合うものを探してもらえたらと思います。

https://github.com/sharkdp/bat?tab=readme-ov-file#installation

テキスト表示

まず、今回はPythonファイルを対象にしてみます。今回利用するのは以下のコードになります。

main.py
from math import ceil
import sys


def calculate_ceil(value: float) -> int:
    return ceil(value)


def main():
    value = float(sys.argv[1])
    ceiled_value = calculate_ceil(value)
    print(f"{ceiled_value=}")


if __name__ == "__main__"
    main()

これをcatコマンドで実行すると以下のような結果になります。

もちろんこれでもコード自体は読めますが、もっと長いコードになると一気に読むのが大変になると思います。また、シンタックスハイライトがないとどこにフォーカスして読めばいいかわかりにくくなってしまいます。

それではこのコードをbatを使って開いてみましょう。すると以下のようになります。

batを使うとシンタックスハイライトだけでなく行番号まで表示され、とてもみやすくなっているのではと思います。ちなみに、例えばJSONやcsvファイルも以下のようにハイライトできます。


オプション

いくつかオプションを紹介したいと思います。

まずは、タブやスペースなどの見えない文字を可視化するオプションです。実行時に-A/--show-allを指定すると以下のように表示できます。

次は、先ほどの例では行番号などが表示されていましたが、ハイライトだけしたい場合は-p/--plainを指定します。

gitとの統合

batではgitの機能が統合されています。例えば先ほどのPythonスクリプトをベースとしていくつか編集を加えたとします。すると以下のようになります。

画像のように変更を加えた行に~+など変更を加えたことを示す記号が表示されます。

まとめ

今回はcatの派生であるbatの紹介をしました。画面にパッと情報を出したいけどシンタックスハイライトや変更箇所の表示をしたい場合に選択肢の一つになるのではないでしょうか。私自身batは普段からよく使っているので、ぜひ皆さんも使ってみてもらえると嬉しいです。

Discussion