BAT(1) General Commands Manual BAT(1) NAME bat - a cat(1) clone with syntax highlighting and Git integration. USAGE bat [OPTIONS] [FILE]... bat cache [CACHE-OPTIONS] [--build|--clear] DESCRIPTION bat prints the syntax-highlighted content of a collection of FILEs to the terminal. If no FILE is specified, or when FILE is '-', it reads from standard input. bat supports a large number of programming and markup languages. It also communicates with git(1) to show modifications with respect to the git index. bat automatically pipes its output through a pager (by de‐ fault: less). Whenever the output of bat goes to a non-interactive terminal, i.e. when the output is piped into another process or into a file, bat will act as a drop-in replacement for cat(1) and fall back to printing the plain file contents. OPTIONS General remarks: Command-line options like '-l'/'--language' that take values can be specified as either '--language value', '--lan‐ guage=value', '-l value' or '-lvalue'. -A, --show-all Show non-printable characters like space, tab or newline. Use '--tabs' to control the width of the tab-placeholders. -p, --plain Only show plain style, no decorations. This is an alias for '--style=plain'. When '-p' is used twice ('-pp'), it also dis‐ ables automatic paging (alias for '--style=plain --pager=never'). -l, --language Explicitly set the language for syntax highlighting. The lan‐ guage can be specified as a name (like 'C++' or 'LaTeX') or pos‐ sible file extension (like 'cpp', 'hpp' or 'md'). Use '--list-languages' to show all supported language names and file extensions. -H, --highlight-line ... Highlight the specified line ranges with a different background color For example: --highlight-line 40 highlights line 40 --highlight-line 30:40 highlights lines 30 to 40 --highlight-line :40 highlights lines 1 to 40 --highlight-line 40: highlights lines 40 to the end of the file --tabs Set the tab width to T spaces. Use a width of 0 to pass tabs through directly --wrap Specify the text-wrapping mode (*auto*, never, character). The '--terminal-width' option can be used in addition to control the output width. --terminal-width Explicitly set the width of the terminal instead of determining it automatically. If prefixed with '+' or '-', the value will be treated as an offset to the actual terminal width. See also: '--wrap'. -n, --number Only show line numbers, no other decorations. This is an alias for '--style=numbers' --color Specify when to use colored output. The automatic mode only en‐ ables colors if an interactive terminal is detected. Possible values: *auto*, never, always. --italic-text Specify when to use ANSI sequences for italic text in the out‐ put. Possible values: always, *never*. --decorations Specify when to use the decorations that have been specified via '--style'. The automatic mode only enables decorations if an in‐ teractive terminal is detected. Possible values: *auto*, never, always. -f, --force-colorization Alias for '--decorations=always --color=always'. This is useful if the output of bat is piped to another program, but you want to keep the colorization/decorations. --paging Specify when to use the pager. To disable the pager, use '--pag‐ ing=never' or its alias, -P. To disable the pager permanently, set BAT_PAGER to an empty string. To control which pager is used, see the '--pager' option. Possible values: *auto*, never, always. --pager Determine which pager is used. This option will override the PAGER and BAT_PAGER environment variables. The default pager is 'less'. To control when the pager is used, see the '--paging' option. Example: '--pager "less -RF"'. -m, --map-syntax ... Map a glob pattern to an existing syntax name. The glob pattern is matched on the full path and the filename. For example, to highlight *.build files with the Python syntax, use -m '*.build:Python'. To highlight files named '.myignore' with the Git Ignore syntax, use -m '.myignore:Git Ignore'. --theme Set the theme for syntax highlighting. Use '--list-themes' to see all available themes. To set a default theme, add the '--theme="..."' option to the configuration file or export the BAT_THEME environment variable (e.g.: export BAT_THEME="..."). --list-themes Display a list of supported themes for syntax highlighting. --style Configure which elements (line numbers, file headers, grid bor‐ ders, Git modifications, ..) to display in addition to the file contents. The argument is a comma-separated list of components to display (e.g. 'numbers,changes,grid') or a pre-defined style ('full'). To set a default style, add the '--style=".."' option to the configuration file or export the BAT_STYLE environment variable (e.g.: export BAT_STYLE=".."). Possible values: *auto*, full, plain, changes, header, grid, numbers, snip. -r, --line-range ... Only print the specified range of lines for each file. For exam‐ ple: --line-range 30:40 prints lines 30 to 40 --line-range :40 prints lines 1 to 40 --line-range 40: prints lines 40 to the end of the file -L, --list-languages Display a list of supported languages for syntax highlighting. -u, --unbuffered This option exists for POSIX-compliance reasons ('u' is for 'un‐ buffered'). The output is always unbuffered - this option is simply ignored. -h, --help Print this help message. -V, --version Show version information. POSITIONAL ARGUMENTS ... Files to print and concatenate. Use a dash ('-') or no argument at all to read from standard input. SUBCOMMANDS cache - Modify the syntax-definition and theme cache. FILES bat can also be customized with a configuration file. The location of the file is dependent on your operating system. To get the default path for your system, call: bat --config-file Alternatively, you can use the BAT_CONFIG_PATH environment variable to point bat to a non-default location of the configuration file. ADDING CUSTOM LANGUAGES bat supports Sublime Text .sublime-syntax language files, and can be customized to add additional languages to your local installation. To do this, add the .sublime-snytax language files to `$(bat --config- dir)/syntaxes` and run `bat cache --build`. Example: mkdir -p "$(bat --config-dir)/syntaxes" cd "$(bat --config-dir)/syntaxes" # Put new '.sublime-syntax' language definition files # in this folder (or its subdirectories), for example: git clone https://github.com/tellnobody1/sublime-purescript-syntax # And then build the cache. bat cache --build Once the cache is built, the new language will be visible in `bat --list-languages`. If you ever want to remove the custom languages, you can clear the cache with `bat cache --clear`. ADDING CUSTOM THEMES Similarly to custom languages, bat supports Sublime Text .tmTheme themes. These can be installed to `$(bat --config-dir)/themes`, and are added to the cache with `bat cache --build`. MORE INFORMATION For more information and up-to-date documentation, visit the bat repo: https://github.com/sharkdp/bat BAT(1)