A cat(1) clone with wings.
bat
as a libraryBeginning with this release, bat
can be used as a library (#423).
This was a huge effort and I want to thank all people who made this possible: @DrSensor, @mitsuhiko, @mre, @eth-p!
bat
crate, see #679 (@DrSensor)I want to stress that this is the very first release of the library. Things are very likely to change. A lot of things are still missing (including the documentation).
That being said, you can start using it! See the example programs in examples/
.
You can see the API documentation here: https://docs.rs/bat/
(Breaking change) Glob-based syntax mapping, see #877 and #592. With this change,
users need to update their bat config files (bat --config-file
), if they have any --map-syntax
settings
present.
The option now works like this:
--map-syntax <glob-pattern>:<syntax-name>
For more information, see the --help
text, the man page or the README.
This new feature allows us to properly highlight files like:
/etc/profile
~/.ssh/config
--highlight-line
now accepts line ranges, see #809 (@lkalir)
Proper wrapping support for output with wide Unicode characters, see #811 #787 and #815 (@Kogia-sima)
A lot of updates to existing syntaxes via #644 (@benwaffle, @keith-hall)
BAT_CACHE_PATH
can be used to place cached bat
assets in a non-standard path, see #829 (@neuronull)
Support combination of multiple styles at the same time, see #857 (@aslpavel)
.sc
files should be treated as scala files, see #443 (@benwaffle)build
don't respect shebang lines, see #685 (@sharkdp)bat
about 10% faster, see #719 (@bolinfest, @sharkdp)bat
for MacOS dark mode, see README (@jerguslejko)bat
as a man
-pager, see #652, see #667 (@sharkdp)--help
text and manpage, see #653 and #700 (@hrlmartins)/etc/fstab
, see #696 (@flopp and @eth-p)/etc/group
and /etc/passwd
, see #698 (@argentite)/proc/cpuinfo
and /proc/meminfo
, see #593 (@sharkdp)bat
is now in the official Ubuntu and Debian repositories, see #323 and #705 (@MarcoFalke)bat
can now be installed via MacPorts, see #675 (@bn3t)bat -A
, see #623, #640 (@pjsier and @sharkdp)bat
can now be used as a man pager. Take a look at the README and #523 for more details.--line-range
s, see #570 (@eth-p)-L
as an alias for --list-languages
--terminal-width -10
is parsed incorrectly, see #611requirements.txt
.env
-l ssh_config
), see #582 (@issmirnov)/etc/hosts
, see #583 (@issmirnov)strace
syntax, see #599bat
is now in the official Gentoo repositories, see #588 (@toku-sa-n)bat
is now in the official Alpine Linux repositories, see #586 (@5paceToast)bat
is in the official Fedora repositories, see #610 (@ignatenkobrain)ansi-light
, ansi-dark
and base16
. These
are useful for people that often switch from dark to light themes in their terminal emulator
or for people that want the colors to match their terminal theme colors. For more details,
see #543 and #490 (@mk12, implementation idea by @trishume)-p
/--plain
option can now be used twice (typically -pp
). The first -p
switches the
--style
to "plain". The second -p
disables the pager. See #560 and #552 (@eth-p)less
when using --pager
, see #509--terminal-width=0
is now disallowed, see #559 (@eth-p)cache
, see #557bat
is now available on Chocolatey, see #541 (@rasmuskriest)--highlight-line <N>
option, see #453, #346 and #175 (@tskinn and @sharkdp)~/.config/bat
, see #442 (@lavifb). If you are on macOS, you need to copy your configuration directory from the previous place (~/Library/Preferences/bat
) to the new place (~/.config/bat
).less
if PAGER
environment variable contains something like less -F
(which is missing the -R
option), see #430 (@majecty)bat cache --init
to bat cache --build
, see #498--config-dir
and --cache-dir
options from bat cache
to bat
and hide them from the help text.--style=plain
, see #379.desktop
files (@jleclanche)A new -A
/--show-all
option has been added to show and highlight non-printable characters (in analogy to GNU cat
s option):
see #395 and #381 for more details.
Added --pager
option (to configure the pager from the configuration file), see #362 (@majecty)
Added BAT_CONFIG_PATH
environment variable to set a non-default path for bat
s configuration file, see #375 (@deg4uss3r)
Allow for multiple occurences of --style
to allow for the configuration
of styles from the config file, see #367 (@sindreij)
Allow for multiple --line-range
arguments, see #23
The --terminal-width
option can now also accept offsets, see #376
Use of italics is now disabled by default (see #389 for details). They can be
re-enabled by adding --italic-text=always
to your configuration file.
The default tab-width has been set to 4.
Added new "Sublime Snazzy" theme.
Shell completions are currently not shipped anymore, see #372 for details.
PAGER="bat"
, see #383 (@rodorgas)bat
is now available on openSUSE, see #405 (@dmarcoux)
Added section about the new configuration file in the README (@deg4uss3r)
Chinese translation of README (@chinanf-boy)
Re-written tests for --tabs
(@choznerol)
Speed up integration tests, see #394
Support for a configuration file with the following simple format:
--tabs=4
--theme="Sublime Snazzy"
# A line-comment
--map-syntax .ignore:.gitignore
--map-syntax PKGBUILD:bash
--map-syntax Podfile:ruby
# Flags and options can also be on a single line:
--wrap=never --paging=never
The configuration file path can be accessed via bat --config-file
. On Linux,
it is stored in ~/.config/bat/config
.
Support for the BAT_OPTS
environment variable with the same format as specified
above (in a single line). This takes precedence over the configuration file.
See also #310.
Support for custom syntax mappings via the -m
/--max-syntax
option.
This allows users to (re)map certain file extensions or file names to an existing syntax:
bat --map-syntax .config:json ...
The option can be use multiple times. Note that you can easily make these mappings permanent by using bats new configuration file.
See #169
Support pager command-line arguments in PAGER
and BAT_PAGER
, see #352 (@Foxboron)
Add support for wildcards in Windows CMD, see #309 (@zxey)
First-line syntax detection for all input types, see #205
Encoding support for UTF-16LE and UTF-16BE, see #285
New syntaxes: Robot framework (@sanga)
JavaDoc comments break syntax highlighting in .java files, see #81
Bat Panics on Haskell Source Code, see #314
Better -h
and --help
texts.
Updated documentation on how to configure bat
s pager
Updated documentation for light backgrounds, see #328 (@russtaylor)
Generate shell completions during build, see #115 (@davideGiovannini)
A lot of new tests have been written
bat
is now available via Termux, see #341 (@fornwall)
bat
is now available via nix, see #344 (@mgttlinger)
bat
is now available via Docker, see #331 (@danlynn)
ansi_colours
package by @mina86 for better true-color approximation on 8 bit color terminals, see #319 and #202.--style=plain
/-p
is used, see #289Tabs are now (optionally) expanded to spaces. This can be controlled with the new
--tabs
command-line option or the BAT_TABS
environment variable. The
new feature also closes two bugs #166 and #184. For more information, see #302 (@eth-p).
Added support for the BAT_STYLE
environment variable, see #208 (@ms2300)
Added OneHalf
theme for terminals with a light-gray background, see #256
Added new syntaxes for CSV, JSX in JavaScript and TypeScript, Cabal, Dart, F#, PureScript, Swift, Crystal, PowerShell (Many Thanks to @tobenna and @mimadrid)
Query git diff
only when needed, see #303 (@ShikChen)
Disable wrapping when --plain
is used, see #289 (@eth-p)
Can read files named cache
, see #275 (@BK1603)
A lot of bugfixes for Windows, see #252, #264
Detect less
reliably and in a portable way, see #271 and #290 (@Aankhen)
last decoration line is not formatted properly with --wrap never
, see #299 (@Rogach)
Do not show file header for directories, see #292
Enabled a new aarch64
build target, see #258 (@rachitchokshi)
Provide Debian packages for armhf
, see #280 (@rachitchokshi)
Added README section about "bat
on Windows" (@Aankhen)
Windows installation via scoop (@meltinglava)