dwww Home | Manual pages | Find package

BATCAT(1)                   General Commands Manual                   BATCAT(1)

NAME
       batcat - a cat(1) clone with syntax highlighting and Git integration.

USAGE
       batcat [OPTIONS] [FILE]...

       batcat cache [CACHE-OPTIONS] [--build|--clear]

DESCRIPTION
       batcat 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.

       batcat supports a large number of programming and markup languages.   It
       also  communicates with git(1) to show modifications with respect to the
       git index.  batcat automatically pipes its output through  a  pager  (by
       default: less).

       Whenever  the  output of batcat goes to a non-interactive terminal, i.e.
       when the output is piped into another process or  into  a  file,  batcat
       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.

       --nonprintable-notation <notation>

              Specify  how  to  display  non-printable  characters  when  using
              --show-all.

              Possible values:

              caret  Use character sequences like ^G, ^J, ^@,  ..  to  identify
                     non-printable characters

              unicode
                     Use  special Unicode code points to identify non-printable
                     characters

       -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   --pag-
              ing=never').

       -l, --language <language>

              Explicitly set the language for syntax highlighting. The language
              can  be  specified  as a name (like 'C++' or 'LaTeX') or possible
              file extension (like 'cpp',  'hpp'  or  'md').  Use  '--list-lan-
              guages' to show all supported language names and file extensions.

       -H, --highlight-line <N:M>...

              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

              --highlight-line 30:+10
                     highlights lines 30 to 40

       --file-name <name>...

              Specify the name to display for a file. Useful when  piping  data
              to  batcat  from  STDIN  when  batcat does not otherwise know the
              filename. Note that the provided file name is also used for  syn-
              tax detection.

       -d, --diff

              Only  show  lines  that have been added/removed/modified with re-
              spect to the Git index. Use  '--diff-context=N'  to  control  how
              much context you want to see.

       --diff-context <N>...

              Include  N  lines  of context around added/removed/modified lines
              when using '--diff'.

       --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.

       -S, --chop-long-lines

              Truncate   all   lines   longer  than  screen  width.  Alias  for
              '--wrap=never'.

       --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 output.
              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 batcat 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' op-
              tion. Example: '--pager "less -RF"'.

              Note: By default, if the pager is set to 'less' (and no  command-
              line  options  are specified), 'bat' will pass the following com-
              mand  line  options  to  the  pager:  '-R'/'--RAW-CONTROL-CHARS',
              '-F'/'--quit-if-one-screen' and '-X'/'--no-init'. The last option
              ('-X')  is only used for 'less' versions older than 530. The '-R'
              option is needed to interpret ANSI colors correctly.  The  second
              option  ('-F')  instructs  less to exit immediately if the output
              size is smaller than the vertical size of the terminal.  This  is
              convenient  for  small files because you do not have to press 'q'
              to quit the pager. The third option ('-X') is needed to fix a bug
              with  the  '--quit-if-one-screen'  feature  in  old  versions  of
              'less'.  Unfortunately,  it  also  breaks  mouse-wheel support in
              'less'. If you want to enable mouse-wheel scrolling on older ver-
              sions of 'less', you can pass just '-R' (as in the example above,
              this will disable the quit-if-one-screen feature). For  less  530
              or newer, it should work out of the box.

       -m, --map-syntax <glob-pattern:syntax-name>...

              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'.  Note that the
              right-hand side is the *name* of the syntax, not  a  file  exten-
              sion.

       --ignored-suffix <ignored-suffix>

              Ignore  extension.  For  example:  'bat  --ignored-suffix  ".dev"
              my_file.json.dev' will use JSON syntax, and ignore '.dev'

       --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="...").

              Special values:

              auto (default)
                     Picks  a  dark  or light theme depending on the terminal's
                     colors.  Use --theme-light and --theme-dark  to  customize
                     the selected theme.

              auto:always
                     Variation  of  auto  where where the terminal's colors are
                     detected even when the output is redirected.

              auto:system (macOS only)
                     Variation of auto where the color scheme is detected  from
                     the system-wide preference instead.

              dark   Use the dark theme specified by --theme-dark.

              light  Use the light theme specified by --theme-light.

       --theme-dark <theme>

              Sets  the theme name for syntax highlighting used when the termi-
              nal uses a dark background.  To set  a  default  theme,  add  the
              --theme-dark="..." option to the configuration file or export the
              BAT_THEME_DARK      environment     variable     (e.g.     export
              BAT_THEME_DARK="...").  This  option  only  has  an  effect  when
              --theme option is set to auto or dark.

       --theme-light <theme>

              Sets  the theme name for syntax highlighting used when the termi-
              nal uses a dark background.  To set  a  default  theme,  add  the
              --theme-dark="..." option to the configuration file or export the
              BAT_THEME_LIGHT     environment     variable     (e.g.     export
              BAT_THEME_LIGHT="...").  This option  only  has  an  effect  when
              --theme option is set to auto or light.

       --list-themes

              Display a list of supported themes for syntax highlighting.

       -s, --squeeze-blank

              Squeeze consecutive empty lines into a single empty line.

       --squeeze-limit <squeeze-limit>

              Set  the maximum number of consecutive empty lines to be printed.

       --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: *de-
              fault*, full,  auto,  plain,  changes,  header,  header-filename,
              header-filesize, grid, rule, numbers, snip.

       -r, --line-range <N:M>...

              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

              --line-range 30:+10
                     prints lines 30 to 40

       -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 sim-
              ply ignored.

       --no-custom-assets

              Do not load custom assets.

       --config-dir

              Show bat's configuration directory.

       --cache-dir

              Show bat's cache directory.

       --diagnostic

              Show diagnostic information for bug reports.

       --acknowledgements

              Show acknowledgements.

       --set-terminal-title

              Sets terminal title to filenames when using a pager.

       -h, --help

              Print this help message.

       -V, --version

              Show version information.

POSITIONAL ARGUMENTS

       <FILE>...

              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
       batcat 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:

       batcat --config-file

       Alternatively,  you  can use the BAT_CONFIG_PATH environment variable to
       point batcat to a non-default location of the configuration file.

       To generate a default configuration file, call:

       batcat --generate-config-file

       These are related options:

       --config-file

              Show path to the configuration file.

       --generate-config-file

              Generates a default configuration file.

       --no-config

              Do not use the configuration file.

ADDING CUSTOM LANGUAGES
       batcat 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-syntax  language  files to `$(batcat --config-
       dir)/syntaxes` and run `batcat cache --build`.

       Example:

            mkdir -p "$(batcat --config-dir)/syntaxes"
            cd "$(batcat --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.
            batcat cache --build

       Once the cache is built, the new language will  be  visible  in  `batcat
       --list-languages`.
       If you ever want to remove the custom languages, you can clear the cache
       with `batcat cache --clear`.

ADDING CUSTOM THEMES
       Similarly  to  custom  languages,  batcat supports Sublime Text .tmTheme
       themes.  These can be installed to `$(batcat --config-dir)/themes`,  and
       are added to the cache with `batcat cache --build`.

INPUT PREPROCESSOR
       Much  like  less(1)  does,  batcat  supports input preprocessors via the
       LESSOPEN and LESSCLOSE environment variables.  In addition,  batcat  at-
       tempts  to  be  as compatible with less's preprocessor implementation as
       possible.

       To use the preprocessor, call:

       batcat --lessopen

       Alternatively, the preprocessor may be enabled by default by adding  the
       '--lessopen' option to the configuration file.

       To  temporarily  disable  the  preprocessor if it is enabled by default,
       call:

       batcat --no-lessopen

       These are related options:

       --lessopen

              Enable the $LESSOPEN preprocessor.

       --no-lessopen

              Disable  the  $LESSOPEN  preprocessor   if   enabled   (overrides
              --lessopen)

       For more information, see the "INPUT PREPROCESSOR" section of less(1).

MORE INFORMATION
       For  more  information  and  up-to-date  documentation, visit the batcat
       repo:
       https://github.com/sharkdp/bat

                                                                      BATCAT(1)

Generated by dwww version 1.16 on Fri Aug 14 20:55:32 CEST 2026.