A cat(1) clone with syntax highlighting and Git integration.
bat supports syntax highlighting for a large number of programming and markup
languages:
bat communicates with git to show modifications with respect to the index
(see left side bar):
bat can pipe its own output to less if the output is too large for one screen.
Oh.. you can also use it to concatenate files 😉. Whenever
bat detects a non-interactive terminal, it will fall back to printing
the plain file contents.
Display a single file on the terminal
> bat README.mdDisplay multiple files at once
> bat src/*.rsExplicitly specify the language
> yaml2json .travis.yml | json_pp | bat -l json> curl -s https://raw.githubusercontent.com/sharkdp/bat/master/src/main.rs | bat -l rsCheck out the Release page for binary builds and Debian packages.
You can install the AUR package via yaourt, or manually:
git clone https://aur.archlinux.org/bat.git
cd bat
makepkg -siYou can install a precompiled bat package with pkg:
pkg install bator build it on your own from the FreeBSD ports:
cd /usr/ports/textproc/bat
make installYou can install bat with Homebrew:
brew install batIf you want to build to compile bat from source, you need Rust 1.24 or
higher. You can then use cargo to build everything:
cargo install batOn macOS, you might have to install cmake (brew install cmake) in order for
some dependencies to be built.
bat uses the excellent syntect
library for syntax highlighting. syntect can read any
Sublime Text .sublime-syntax file
and theme.
To build your own language-set and theme, follow these steps:
Create a folder with a syntax highlighting theme:
BAT_CONFIG_DIR="$(bat cache --config-dir)"
mkdir -p "$BAT_CONFIG_DIR/themes"
cd "$BAT_CONFIG_DIR/themes"
# Download a theme, for example:
git clone https://github.com/jonschlinkert/sublime-monokai-extended
# Create a 'Default.tmTheme' link
ln -s "sublime-monokai-extended/Monokai Extended.tmTheme" Default.tmThemeCreate a folder with language definition files:
mkdir -p "$BAT_CONFIG_DIR/syntaxes"
cd "$BAT_CONFIG_DIR/syntaxes"
# Download some language definition files, for example:
git clone https://github.com/sublimehq/Packages/
rm -rf Packages/Markdown
git clone https://github.com/jonschlinkert/sublime-markdown-extendedFinally, use the following command to parse all these files into a binary cache:
bat cache --initIf you ever want to go back to the default settings, call:
bat cache --clear
