2 <img src="logo-header.svg" alt="bat - a cat clone with wings"><br>
3 <a href="https://github.com/sharkdp/bat/actions?query=workflow%3ACICD"><img src="https://github.com/sharkdp/bat/workflows/CICD/badge.svg" alt="Build Status"></a>
4 <img src="https://img.shields.io/crates/l/bat.svg" alt="license">
5 <a href="https://crates.io/crates/bat"><img src="https://img.shields.io/crates/v/bat.svg?colorB=319e8c" alt="Version info"></a><br>
6 シンタックスハイライトとGitとの連携機能付きの <i>cat(1)</i> クローン。
10 <a href="#シンタックスハイライト">特徴</a> •
11 <a href="#使い方">使い方</a> •
12 <a href="#インストール">インストール</a> •
13 <a href="#カスタマイズ">カスタマイズ</a> •
14 <a href="#プロジェクトの目標と既存の類似したOSS">プロジェクトの目標と既存の類似したOSS</a><br>
15 [<a href="../README.md">English</a>]
16 [<a href="README-zh.md">中文</a>]
18 [<a href="README-ko.md">한국어</a>]
19 [<a href="README-ru.md">Русский</a>]
24`bat` は多くのプログラミング言語やマークアップ言語の
27
31`bat` は `git` とも連携しており、差分を表現する記号が表示されます
34
38`-A`/`--show-all` オプションをつけることで
41
45出力が1つの画面に対して大きすぎる場合、`bat` は自身の出力をページャー(例えば `less`) にパイプで繋げます。
49あなたはさらにファイルを連結させるために使うことも可能です:wink:。
50`bat` は非対話型のターミナルを検出すると(すなわち他のプロセスにパイプしたりファイル出力していると)、
51`bat` は `cat` の完全互換として振る舞い、
68標準入力から自動的に構文を決定させたい場合(ハイライトされるのは、
69たいていは `#!/bin/sh` のようなシバンを利用して、
70ファイルの一行目から構文を決定できる場合のみです)
73> curl -s https://sh.rustup.rs | bat
79> yaml2json .travis.yml | json_pp | bat -l json
87`cat` の代わりに `bat` を使用する際の例:
90bat > note.md # quickly create a new file
92bat header.md content.md footer.md > document.md
94bat -n main.rs # show line numbers (only)
96bat f - g # output 'f', then stdin, then 'g'.
103[`fzf`](https://github.com/junegunn/fzf) のプレビューウィンドウに `bat` を使用できます。
104その場合、`bat` の `--color=always` オプションを用いてカラー出力を強制しなければなりません。
105また、`--line-range` オプションを用いることで巨大なファイルの読み込み時間を制限できます:
107fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'
110詳しくは [`fzf` の `README`](https://github.com/junegunn/fzf#preview-window) を参照してください。
114`find` の `-exec` オプションを使用して、`bat` ですべての検索結果をプレビューできます:
119[`fd`](https://github.com/sharkdp/fd) を使用している場合は、`-X` /`-exec-batch` オプションを使用して同じことを行うことができます:
126[`batgrep`](https://github.com/eth-p/bat-extras/blob/master/doc/batgrep.md) では、[`ripgrep`](https://github.com/BurntSushi/ripgrep) 検索結果のプリンターとして `bat` を使用できます。
134`bat` を `tail -f` と組み合わせて、構文強調表示を使用して特定のファイルを継続的に監視できます。
136tail -f /var/log/pacman.log | bat --paging=never -l log
138注意事項:`tail -f`と組み合わせるには、ページングをオフにしなければなりません。また、この場合は構文が自動検出されないため、明示的に指定(`-l log`)しています。
142`bat` を `git show` と組み合わせて、
143適切な構文強調表示を使用して特定のファイルの古いバージョンを表示できます:
145git show v0.6.0:src/main.rs | bat -l rs
148差分内の構文強調表示は現在サポートされていないことに注意してください。 これを探しているなら、[`delta`](https://github.com/dandavison/delta) をチェックしてください。
152`bat` の出力の行番号と Git 変更マーカーにより、ファイルの内容をコピーするのが難しくなる場合があります。
153これを防ぐには、`-p` / `-plain` オプションを使用して `bat` を呼び出すか、
154単に出力を `xclip` にパイプします:
158`bat` は出力がリダイレクトされていることを検出し、プレーンファイルの内容を出力します。
162`bat` は `MANPAGER` 環境変数を設定することにより、
163`man` の色付けページャーとして使用できます:
166export MANPAGER="sh -c 'col -bx | bat -l man -p'"
171`MANROFFOPT="-c"` を設定する必要もあります。
173これを新しいコマンドにバンドルしたい場合は [`batman`](https://github.com/eth-p/bat-extras/blob/master/doc/batman.md) も使用できます。
175[Manpage syntax](assets/syntaxes/Manpage.sublime-syntax) はこのリポジトリで開発されており、まだ作業が必要であることに注意してください。
177#### `prettier` / `shfmt` / `rustfmt`
179[`prettybat`](https://github.com/eth-p/bat-extras/blob/master/doc/prettybat.md) スクリプトは、コードをフォーマットし、`bat` で印刷するラッパーです。
184[](https://repology.org/project/bat-cat/versions)
186### On Ubuntu (`apt` を使用)
187*... や他のDebianベースのLinuxディストリビューション*
189Ubuntu Eoan 19.10 または Debian 不安定版 sid 以降の [the Ubuntu `bat` package](https://packages.ubuntu.com/eoan/bat) または [the Debian `bat` package](https://packages.debian.org/sid/bat) からインストールできます:
195`apt` を使用して `bat` をインストールした場合、実行可能ファイルの名前が `bat` ではなく `batcat` になることがあります([他のパッケージとの名前衝突のため](https://github.com/sharkdp/bat/issues/982))。`bat -> batcat` のシンボリックリンクまたはエイリアスを設定することで、実行可能ファイル名が異なることによる問題の発生を防ぎ、他のディストリビューションと一貫性を保てます。
199ln -s /usr/bin/batcat ~/.local/bin/bat
202### On Ubuntu (最新の `.deb` パッケージを使用)
203*... や他のDebianベースのLinuxディストリビューション
205batの最新リリースを実行する場合、または Ubuntu/Debian の古いバージョンを使用している場合は、[release page](https://github.com/sharkdp/bat/releases) から最新の `.deb` パッケージをダウンロードし、
208sudo dpkg -i bat_0.18.3_amd64.deb # adapt version number and architecture
214公式のソースから [`bat` package](https://pkgs.alpinelinux.org/packages?name=bat) をインストールできます:
222[Arch Linuxの公式リソース](https://www.archlinux.org/packages/community/x86_64/bat/)
231公式の [Fedora Modular](https://docs.fedoraproject.org/en-US/modularity/using-modules/) リポジトリから [the `bat` package](https://koji.fedoraproject.org/koji/packageinfo?packageID=27506) をインストールできます。
240[the `bat` package](https://packages.gentoo.org/packages/sys-apps/bat) をインストールできます。
248xbps-install経由で `bat` をインストールできます。
255pkg を使用してプリコンパイルされた [`bat` package](https://www.freshports.org/textproc/bat) をインストールできます:
261または FreeBSD ポートから自分でビルドすることもできます:
264cd /usr/ports/textproc/bat
270`bat` を [nix package manager](https://nixos.org/nix) 経由でインストールすることができます:
278`bat` をzypperでインストールすることができます:
286[Homebrew](http://braumeister.org/formula/bat)で `bat` をインストールできます:
292または [MacPorts](https://ports.macports.org/port/bat/summary) で `bat` をインストールします:
300Windowsにbatをインストールするいくつかのオプションがあります。
301batをインストールしたら [Windowsでのbatの使用](#windows-での-bat-の利用) セクションをご覧ください。
305[Chocolatey](https://chocolatey.org/packages/Bat) から `bat` をインストールできます:
312[scoop](https://scoop.sh/) から `bat` をインストールできます:
317[Visual C ++再頒布可能](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) パッケージをインストールする必要があります。
319#### From prebuilt binaries:
321[リリースページ](https://github.com/sharkdp/bat/releases) からビルド済みのバイナリをダウンロードできます。
323[Visual C ++再頒布可能](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) パッケージをインストールする必要があります。
327コンテナ内で `bat` を使いたい方のために [Docker image](https://hub.docker.com/r/danlynn/bat/) が用意されています:
329docker pull danlynn/bat
330alias bat='docker run -it --rm -e BAT_THEME -e BAT_STYLE -e BAT_TABS -v "$(pwd):/myapp" danlynn/bat'
335[Ansible](https://www.ansible.com/) でインストールすることができます:
338# Install role on local machine
339ansible-galaxy install aeimer.install_bat
344# Playbook to install bat
350- [Ansible Galaxy](https://galaxy.ansible.com/aeimer/install_bat)
351- [GitHub](https://github.com/aeimer/ansible-install-bat)
353これは以下のディストリビューションで動作するはずです:
355- ARM (eg. Raspberry PI)
364多くの異なるアーキテクチャのためのプレビルドバージョンを[リリースページ](https://github.com/sharkdp/bat/releases)からチェックしてみてください。静的にリンクされている多くのバイナリも利用できます: ファイル名に `musl` を含むアーカイブを探してみてください。
369`bat` をソースからビルドしたいならば、Rust 1.51 以上の環境が必要です。
370`cargo` を使用してビルドすることができます:
373cargo install --locked bat
376一部のプラットフォームでは `llvm` および/または `libclang-dev` のインストールが必要になる場合があります。
382`bat --list-themes` を使うと現在利用可能なシンタックスハイライトのテーマを入手できます。
384`--theme=TwoDark` オプションをつけるか `BAT_THEME` という環境変数に
385`TwoDark` を代入する必要があります。 シェルの起動ファイルに `export BAT_THEME="TwoDark"`
386と定義すればその設定が変わることはないでしょう。あるいは、 `bat` の
387[設定ファイル](#設定ファイル)を利用してください。
389カスタムファイルでさまざまなテーマをプレビューする場合は、
390次のコマンドを使用できます(これには [`fzf`](https://github.com/junegunn/fzf) が必要です)。
392bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
395`bat` はデフォルトだと黒い背景色のターミナルに適しています。
396しかし、`GitHub` や `OneHalfLight` のような白い背景色のテーマでもいい感じにすることができます。
397['新しいテーマの追加' セクションに従って](#新しいテーマの追加)
402`--style` を使うことで `bat` の表示の見た目を変更することができます。
403例えば、 `--style=numbers,changes` と入力します。
404すると、Gitの差分と行番号だけが表示され、グリッド線とファイルヘッダーは表示されません。
405環境変数に `BAT_STYLE` を定義するとこれらの設定を永続的に使用することができます。
406[設定ファイル](#設定ファイル) を参考にしても良いでしょう。
410`bat` はシンタックスハイライトのための [`syntect`](https://github.com/trishume/syntect/)
411という素晴らしいライブラリを使用しています。`syntect` は、
412[Sublime Text の `.sublime-syntax` ファイル](https://www.sublimetext.com/docs/3/syntax.html)
413とテーマを読み取ることができます。新しい構文を定義するために以下の手順を行います。
415構文定義ファイルを入れておくためのフォルダを作ります:
418mkdir -p "$(bat --config-dir)/syntaxes"
419cd "$(bat --config-dir)/syntaxes"
421# Put new '.sublime-syntax' language definition files
422# in this folder (or its subdirectories), for example:
423git clone https://github.com/tellnobody1/sublime-purescript-syntax
426次のコマンドを使用して、これらのファイルをバイナリキャッシュに解析します:
432最後に `bat --list-languages` と入力すると新しい言語が利用可能かどうかチェックします。
434デフォルトの設定に戻したいときは以下のコマンドを実行します:
442これは構文を新しく定義するやり方と非常に似ています。
444まず、新しいシンタックスハイライトのテーマのフォルダを作ります:
446mkdir -p "$(bat --config-dir)/themes"
447cd "$(bat --config-dir)/themes"
449# Download a theme in '.tmTheme' format, for example:
450git clone https://github.com/greggb/sublime-snazzy
452# Update the binary cache
456最後に、 `bat --list-themes` で新しいテーマが利用可能かチェックします
460`bat` は環境変数 `PAGER` に使用するページャーを明記します。
461この環境変数が定義されていない場合、デフォルトで `less` が使用されます。
462もし、異なるページャーを使用したい場合は、`PAGER` を修正してください。
463または、`PAGER` を上書きする環境変数として `BAT_PAGER` を定義することも可能です。
465もし、ページャーにコマンドライン引数を渡したい場合は、
466`PAGER`/`BAT_PAGER` 環境変数を定義してください:
469export BAT_PAGER="less -RF"
472環境変数を利用する代わりに、 `bat` の [設定ファイル](#設定ファイル) を使用して設定も可能です(`--pager` オプション)
474**注意**: デフォルトにより、ページャーが `less` にセットされているならば
475`bat` はページャーの以下のコマンドラインオプション を受け付けるでしょう:
476`-R`/`--RAW-CONTROL-CHARS`, `-F`/`--quit-if-one-screen` そして `-X`/`--no-init`。
477最後のオプション(-X)は、530 より古いバージョンにのみ使用されます。
479`-R` オプションは、ANSIカラーを正しく解釈するために必要です。
4802番目のオプション(`-F`)は、出力サイズが端末の垂直サイズよりも小さい場合、すぐに終了するようにlessに指示します。
481これは、ページャーを終了するために `q` を押す必要がないため、小さなファイルに便利です。
4823番目のオプション(`-X`)は、`less` の古いバージョンの `--quit-if-one-screen` 機能のバグを修正するために必要です。
483残念ながら、`less` のマウスホイールのサポートも少なくなります。
485`less` の古いバージョンでマウスホイールのスクロールを有効にしたい場合は、
486`-R` だけを渡すことができます(上記の例のように、これは1画面終了機能を無効にします)。
491macOSでダークモード機能を使用する場合、OSテーマに基づいて異なるテーマを使用するように `bat` を構成することができます。
492次のスニペットは、ライトモードの場合は `デフォルト` のテーマを使用し、
493ダークモードの場合は `GitHub` テーマを使用します。
496alias cat="bat --theme=\$(defaults read -globalDomain AppleInterfaceStyle &> /dev/null && echo default || echo GitHub)"
501`bat` は設定ファイルでカスタマイズすることが可能です。ファイルの場所はOSに依存します。
502使用しているOSのデフォルトパスを調べるには以下のコマンドを実行してください:
507または、`BAT_CONFIG_PATH` 環境変数を使用して、`bat` が
508構成ファイルのデフォルト以外の場所を指すようにすることができます:
510export BAT_CONFIG_PATH="/path/to/bat.conf"
515この設定ファイルはコマンドライン引数の単純なリストです。 `bat --help` を利用すると、利用可能なオプションとその値を閲覧することができます。さらに、`#` でコメント文を加えることができます。
519# Set the theme to "TwoDark"
522# Show line numbers, Git modifications and file header (but no grid)
523--style="numbers,changes,header"
525# Use italic text on the terminal (not supported on all terminals)
528# Use C++ syntax for Arduino .ino files
529--map-syntax "*.ino:C++"
531# Use ".gitignore"-style highlighting for ".ignore" files
532--map-syntax ".ignore:Git Ignore"
535## Windows での `bat` の利用
537Windows 上で `bat` はほとんど動作しますが、いくつかの機能は設定を必要をする場合があります。
541Windowsには、`more` 形式の非常に限られたページャーしか含まれていません。
542`less` 用のWindowsバイナリは、[ホームページ](http://www.greenwoodsoftware.com/less/download.html) または
543[Chocolatey](https://chocolatey.org/packages/Less) からダウンロードできます。
544これを使用するには、バイナリを `PATH` のディレクトリに配置するか、環境変数を定義します。[Chocolateyパッケージ](#on-windows) は `less` を自動的にインストールします。
548Windows 10では、`conhost.exe` (コマンドプロンプト)と
549[v1511](https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1511_(November_Update)) 以降の PowerShell の両方、
550およびbashの新しいバージョンの色がネイティブにサポートされています。 以前のバージョンのWindowsでは、
551[ConEmu](https://conemu.github.io/) を含む [Cmder](http://cmder.net/) を使用できます。
553**注意:** Git と MSYS の `less` はWindows上で色を正しく解釈しません。
554もし、あなたが他のページャーをインストールしていないのであれば、 `--paging=never` オプションを付け加えるか
555`BAT_PAGER` に空文字を設定することでページングを完全に無効にできます。
559Windows上の `bat` は Cygwin のunix風のpath(`/cygdrive/*`)をネイティブサポートしていません。絶対的なcygwinパスを引数として受けたときに、 `bat` は以下のエラーを返すでしょう: `The system cannot find the path specified. (os error 3)`
561wrapperを作成するか、以下の関数を `.bash_profile` に追記することで、この問題を解決することができます:
567 for index in $(seq 0 ${#args[@]}) ; do
568 case "${args[index]}" in
570 *) [ -e "${args[index]}" ] && args[index]="$(cygpath --windows "${args[index]}")";;
573 command bat "${args[@]}"
581`bat` はターミナルがトゥルーカラーをサポートしている/していないに関係なくサポートします。
582しかし、シンタックスハイライトのテーマの色が8-bitカラーに最適化されていない場合、
58324-bitであるトゥルーカラーをサポートしているターミナルを使用することを強く推奨します(`terminator`, `konsole`, `iTerm2`, ...)。
584この [記事](https://gist.github.com/XVilka/8346728) には
58524-bitカラーがサポートされているターミナルの一覧が掲載されています。
587本当の色をターミナルにセットするために、環境変数 `COLORTERM` に `truecolor` か
588`24bit` のどちらかを代入してください。さもなければ、`bat` はどの色を使うのか決定することができません。または、24-bit エスケープシーケンスがサポートされません
589(そして、8-bit colorに戻ります)。
591### 行番号とグリッド線がほとんど見えない
593異なるテーマを試してみてください(`bat --list-themes` でテーマを閲覧できます)。
594`OneHalfDark` と `OneHalfLight` テーマはグリッド線と線の色を明るくします。
598`bat` は UTF-16 と同様に UTF-8 をネイティブにサポートします。
599他のすべてのファイルエンコーディングでは、エンコーディングは通常自動検出できないため、最初に UTF-8 に変換する必要があります。
600これを行うには `iconv` を使用できます。
601例: Latin-1(ISO-8859-1)エンコーディングの PHP ファイルがある場合、次のように呼び出すことができます:
603iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat
605注: `bat` が構文を自動検出できない場合は
606`-l` / `-language` オプションを使用する必要がある場合があります。
611# Recursive clone to retrieve all submodules
612git clone --recursive https://github.com/sharkdp/bat
614# Build (debug version)
618# Run unit tests and integration tests
621# Install (release version)
622cargo install --locked
624# Build a bat binary with modified syntaxes and themes
626cargo install --locked --force
631- [sharkdp](https://github.com/sharkdp)
632- [eth-p](https://github.com/eth-p)
634## プロジェクトの目標と既存の類似したOSS
636`bat` は以下の目標を達成しようと試みています:
638- 美しく高度なシンタックスハイライトの提供
639- ファイルの差分を表示するためのGitとの連携
640- (POSIX) `cat` との完全互換
641- ユーザーフレンドリーなコマンドラインインターフェースの提供
643あなたが同様のプログラムを探しているなら、多くの選択肢があります。
644比較については [このドキュメント](alternatives.md) を参照してください。
647Copyright (c) 2018-2021 [bat-developers](https://github.com/sharkdp/bat).
649`bat` は MIT License 及び Apache License 2.0 の両方の条件の下で配布されています。
651ライセンスの詳細については [LICENSE-APACHE](../LICENSE-APACHE) 及び [LICENSE-MIT](../LICENSE-MIT) ファイルを参照して下さい。
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list