Documentation
Please read the ack manual, which also includes the ack FAQ.
See also the Changelog for v3.8.1.
ack's command-line switches (ack --help)
Usage: ack [OPTION]... PATTERN [FILES OR DIRECTORIES] Search for PATTERN in each source file in the tree from the current directory on down. If any files or directories are specified, then only those files and directories are checked. ack may also search STDIN, but only if no file or directory arguments are specified, or if one of them is "-". Default switches may be specified in an .ackrc file. If you want no dependency on the environment, turn it off with --noenv. File select actions: -f Only print the files selected, without searching. The PATTERN must not be specified. -g Same as -f, but only select files matching PATTERN. File listing actions: -l, --files-with-matches Print filenames with at least one match -L, --files-without-matches Print filenames with no matches -c, --count Print filenames and count of matching lines Searching: -i, --ignore-case Ignore case distinctions in PATTERN -S, --[no]smart-case Ignore case distinctions in PATTERN, only if PATTERN contains no upper case. Ignored if -i or -I are specified. -I, --no-ignore-case Turns on case-sensitivity in PATTERN. Negates -i and --smart-case. -v, --invert-match Invert match: select non-matching lines -w, --word-regexp Force PATTERN to match only whole words -Q, --literal Quote all metacharacters; PATTERN is literal --range-start PATTERN Specify PATTERN as the start of a match range. --range-end PATTERN Specify PATTERN as the end of a match range. --match PATTERN Specify PATTERN explicitly. Typically omitted. --not PATTERN Specifies PATTERN that must not be found on the line for a match to occur. Repeatable. Search output: --output=expr Output the evaluation of expr for each line (turns off text highlighting) -o Show only the part of a line matching PATTERN Same as --output='$&' --passthru Print all lines, whether matching or not -m, --max-count=NUM Stop searching in each file after NUM matches -1 Stop searching after one match of any kind -H, --with-filename Print the filename for each match (default: on unless explicitly searching a single file) -h, --no-filename Suppress the prefixing filename on output --[no]column Show the column number of the first match -A NUM, --after-context=NUM Print NUM lines of trailing context after matching lines. -B NUM, --before-context=NUM Print NUM lines of leading context before matching lines. -C [NUM], --context[=NUM] Print NUM lines (default 2) of output context. --print0 Print null byte as separator between filenames, only works with -f, -g, -l, -L or -c. -s Suppress error messages about nonexistent or unreadable files. File presentation: --pager=COMMAND Pipes all ack output through COMMAND. For example, --pager="less -R". Ignored if output is redirected. --nopager Do not send output through a pager. Cancels any setting in ~/.ackrc, ACK_PAGER or ACK_PAGER_COLOR. --[no]heading Print a filename heading above each file's results. (default: on when used interactively) --[no]break Print a break between results from different files. (default: on when used interactively) --group Same as --heading --break --nogroup Same as --noheading --nobreak -p, --proximate=LINES Separate match output with blank lines unless they are within LINES lines from each other. -P, --proximate=0 Negates --proximate. --[no]underline Print a line of carets under the matched text. --[no]color, --[no]colour Highlight the matching text (default: on unless output is redirected, or on Windows) --color-filename=COLOR --color-match=COLOR --color-colno=COLOR --color-lineno=COLOR Set the color for filenames, matches, line and column numbers. --help-colors Show a list of possible color combinations. --help-rgb-colors Show a list of advanced RGB colors. --flush Flush output immediately, even when ack is used non-interactively (when output goes to a pipe or file). File finding: --sort-files Sort the found files lexically. --show-types Show which types each file has. --files-from=FILE Read the list of files to search from FILE. -x Read the list of files to search from STDIN. File inclusion/exclusion: --[no]ignore-dir=name Add/remove directory from list of ignored dirs --[no]ignore-directory=name Synonym for ignore-dir --ignore-file=FILTER:ARGS Add filter for ignoring files. -r, -R, --recurse Recurse into subdirectories (default: on) -n, --no-recurse No descending into subdirectories --[no]follow Follow symlinks. Default is off. File type inclusion/exclusion: -t X, --type=X Include only X files, where X is a filetype, e.g. python, html, markdown, etc -T X, --type=noX Exclude X files, where X is a filetype. -k, --known-types Include only files of types that ack recognizes. --help-types Display all known types, and how they're defined. File type specification: --type-set=TYPE:FILTER:ARGS Files with the given ARGS applied to the given FILTER are recognized as being of type TYPE. This replaces an existing definition for TYPE. --type-add=TYPE:FILTER:ARGS Files with the given ARGS applied to the given FILTER are recognized as being type TYPE. --type-del=TYPE Removes all filters associated with TYPE. Miscellaneous: --version Display version & copyright --[no]env Ignore environment variables and global ackrc files. --env is legal but redundant. --ackrc=filename Specify an ackrc file to use --ignore-ack-defaults Ignore default definitions included with ack. --create-ackrc Outputs a default ackrc for your customization to standard output. --dump Dump information on which options are loaded and where they're defined. --[no]filter Force ack to treat standard input as a pipe (--filter) or tty (--nofilter) --help This help --man Print the manual. --help-types Display all known types, and how they're defined. --help-colors Show a list of possible color combinations. --help-rgb-colors Show a list of advanced RGB colors. --thpppt Bill the Cat --bar The warning admiral --cathy Chocolate! Chocolate! Chocolate! Filter specifications: If FILTER is "ext", ARGS is a list of extensions checked against the file's extension. If FILTER is "is", ARGS must match the file's name exactly. If FILTER is "match", ARGS is matched as a case-insensitive regex against the filename. If FILTER is "firstlinematch", ARGS is matched as a regex the first line of the file's contents. Exit status is 0 if match, 1 if no match. ack's home page is at https://beyondgrep.com/ The full ack manual is available by running "ack --man". This is version v3.7.0 of ack. Run "ack --version" for full version info.
ack's file types (ack --help-types)
Usage: ack [OPTION]... PATTERN [FILES OR DIRECTORIES] The following is the list of filetypes supported by ack. You can specify a filetype to include with -t TYPE or --type=TYPE. You can exclude a filetype with -T TYPE or --type=noTYPE. Note that some files may appear in multiple types. For example, a file called Rakefile is both Ruby (--type=ruby) and Rakefile (--type=rakefile). actionscript .as .mxml ada .ada .adb .ads asm .asm .s asp .asp aspx .master .ascx .asmx .aspx .svc batch .bat .cmd bazel .bzl; .bazelrc; BUILD; WORKSPACE cc .c .h .xs cfmx .cfc .cfm .cfml clojure .clj .cljs .edn .cljc cmake CMakeLists.txt; .cmake coffeescript .coffee cpp .cpp .cc .cxx .m .hpp .hh .h .hxx crystal .cr .ecr csharp .cs css .css dart .dart delphi .pas .int .dfm .nfm .dof .dpk .dproj .groupproj .bdsgroup .bdsproj elisp .el elixir .ex .exs elm .elm erlang .erl .hrl fortran .f .f77 .f90 .f95 .f03 .for .ftn .fpp go .go groovy .groovy .gtmpl .gpp .grunit .gradle gsp .gsp haskell .hs .lhs hh .h hpp .hpp .hh .h .hxx html .htm .html .xhtml jade .jade java .java .properties jenkins Jenkinsfile js .js json .json jsp .jsp .jspx .jspf .jhtm .jhtml kotlin .kt .kts less .less lisp .lisp .lsp lua .lua; First line matches /^#!.*\blua(jit)?/ make .mk; .mak; makefile; Makefile; Makefile.Debug; Makefile.Release; GNUmakefile markdown .md .markdown matlab .m objc .m .h objcpp .mm .h ocaml .ml .mli .mll .mly perl .pl .pm .pod .t .psgi; First line matches /^#!.*\bperl/ perltest .t php .php .phpt .php3 .php4 .php5 .phtml; First line matches /^#!.*\bphp/ plone .pt .cpt .metadata .cpy .py pod .pod powershell .ps1 .psm1 purescript .purs pytest Filename matches (?^i:_test[.]py$); Filename matches (?^i:^test_.*[.]py$) python .py; First line matches /^#!.*\bpython/ rake Rakefile rr .R .Rmd rst .rst ruby .rb .rhtml .rjs .rxml .erb .rake .spec; Rakefile; First line matches /^#!.*\bruby/ rust .rs sass .sass .scss scala .scala .sbt scheme .scm .ss shell .sh .bash .csh .tcsh .ksh .zsh .fish; First line matches /^#!.*\b(?:ba|t?c|k|z|fi)?sh\b/ smalltalk .st smarty .tpl sql .sql .ctl starlark .star stylus .styl svg .svg swift .swift; First line matches /^#!.*\bswift/ tcl .tcl .itcl .itk tex .tex .cls .sty toml .toml ts .ts .tsx ttml .tt .tt2 .ttml vb .bas .cls .frm .ctl .vb .resx verilog .v .vh .sv vhdl .vhd .vhdl vim .vim xml .xml .dtd .xsd .xsl .xslt .ent .wsdl; First line matches /<[?]xml/ yaml .yaml .yml