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 <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 <T>  Set the tab width to T spaces. Use a width of 0 to pass tabs  through directly  --wrap <mode>  Specify the text-wrapping mode (*auto*, never, character). The  '--terminal-width' option can be used in addition to control the  output width.  --terminal-width <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 <when>  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 <when>  Specify when to use ANSI sequences for italic text in the out‐  put. Possible values: always, *never*.  --decorations <when>  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 <when>  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 <command>  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 <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 <style-components>  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)