Difference between revisions of "Ack"

From Christoph's Personal Wiki
Jump to: navigation, search
 
(Usage)
Line 3: Line 3:
 
==Usage==
 
==Usage==
 
''Note: Taken directly from the official website.''
 
''Note: Taken directly from the official website.''
<pre>
 
$ ack --help
 
Usage: ack [OPTION]... PATTERN [FILES]
 
  
Search for PATTERN in each source file in the tree from cwd on down.
+
*Syntax:
If [FILES] is specified, then only those files/directories are checked.
+
ack [OPTION]... PATTERN [FILES]
ack may also search STDIN, but only if no FILES are specified, or if
+
one of FILES is "-".
+
  
Default switches may be specified in ACK_OPTIONS environment variable or
+
*Help:
an .ackrc file. If you want no dependency on the environment, turn it
+
ack --help
off with --noenv.
+
  
Example: ack -i select
+
Search for PATTERN in each source file in the tree from cwd on down. If [FILES] is specified, then only those files/directories are checked. ack may also search STDIN, but only if no FILES are specified, or if one of FILES is "-".
  
Searching:
+
Default switches may be specified in ACK_OPTIONS environment variable or an .ackrc file. If you want no dependency on the environment, turn it off with --noenv.
  -i, --ignore-case    Ignore case distinctions in PATTERN
+
  -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
+
  
Search output:
+
Example:
 +
ack -i select
 +
 
 +
===Searching===
 +
;<code>-i, --ignore-case</code> : Ignore case distinctions in PATTERN
 +
;<code>-v, --invert-match</code> : Invert match: select non-matching lines
 +
;<code>-w, --word-regexp</code> : Force PATTERN to match only whole words
 +
;<code>-Q, --literal</code> : Quote all metacharacters; PATTERN is literal
 +
 
 +
===Search output===
 
   --line=NUM            Only print line(s) NUM of each file
 
   --line=NUM            Only print line(s) NUM of each file
 
   -l, --files-with-matches
 
   -l, --files-with-matches
Line 54: Line 53:
 
                         only works with -f, -g, -l, -L or -c.
 
                         only works with -f, -g, -l, -L or -c.
  
File presentation:
+
===File presentation===
 
   --pager=COMMAND      Pipes all ack output through COMMAND.
 
   --pager=COMMAND      Pipes all ack output through COMMAND.
 
                         Ignored if output is redirected.
 
                         Ignored if output is redirected.
Line 65: Line 64:
 
   --group              Same as --heading --break
 
   --group              Same as --heading --break
 
   --nogroup            Same as --noheading --nobreak
 
   --nogroup            Same as --noheading --nobreak
   --[no]color          Highlight the matching text (default: on unless
+
   --[no]color          Highlight the matching text (default: on unless output is redirected, or on Windows)
                        output is redirected, or on Windows)
+
 
   --flush              Flush output immediately, even when ack is used
 
   --flush              Flush output immediately, even when ack is used
                         non-interactively (when output goes to a pipe or
+
                         non-interactively (when output goes to a pipe or file).
                        file).
+
  
File finding:
+
===File finding===
 
   -f                    Only print the files found, without searching.
 
   -f                    Only print the files found, without searching.
 
                         The PATTERN must not be specified.
 
                         The PATTERN must not be specified.
Line 77: Line 74:
 
   --sort-files          Sort the found files lexically.
 
   --sort-files          Sort the found files lexically.
  
File inclusion/exclusion:
+
===File inclusion/exclusion===
 
   -a, --all-types      All file types searched;
 
   -a, --all-types      All file types searched;
 
                         Ignores CVS, .svn and other ignored directories
 
                         Ignores CVS, .svn and other ignored directories
Line 84: Line 81:
 
   -n                    No descending into subdirectories
 
   -n                    No descending into subdirectories
 
   -G REGEX              Only search files that match REGEX
 
   -G REGEX              Only search files that match REGEX
 
 
   --perl                Include only Perl files.
 
   --perl                Include only Perl files.
 
   --type=perl          Include only Perl files.
 
   --type=perl          Include only Perl files.
Line 90: Line 86:
 
   --type=noperl        Exclude Perl files.
 
   --type=noperl        Exclude Perl files.
 
                         See "ack --help type" for supported filetypes.
 
                         See "ack --help type" for supported filetypes.
 
 
   --type-add TYPE=.EXTENSION[,.EXT2[,...]]
 
   --type-add TYPE=.EXTENSION[,.EXT2[,...]]
 
                         Files with the given EXTENSION(s) are recognized as
 
                         Files with the given EXTENSION(s) are recognized as
Line 98: Line 93:
 
                         being of type TYPE. This replaces an existing
 
                         being of type TYPE. This replaces an existing
 
                         definition for type TYPE.
 
                         definition for type TYPE.
 
 
   --[no]follow          Follow symlinks.  Default is off.
 
   --[no]follow          Follow symlinks.  Default is off.
  
Line 111: Line 105:
 
     /core\.\d+$/  - core dumps
 
     /core\.\d+$/  - core dumps
  
Miscellaneous:
+
===Miscellaneous===
 
   --noenv              Ignore environment variables and ~/.ackrc
 
   --noenv              Ignore environment variables and ~/.ackrc
 
   --help                This help
 
   --help                This help
Line 118: Line 112:
 
   --thpppt              Bill the Cat
 
   --thpppt              Bill the Cat
  
This is version 1.84 of ack.
+
===Filetypes===
 
+
The following is the list of filetypes supported by ack. You can specify a file type with the --type=TYPE format, or the --TYPE
$ ack --help-types
+
format. For example, both --type=perl and --perl work.
Usage: ack [OPTION]... PATTERN [FILES]
+
 
+
The following is the list of filetypes supported by ack. You can
+
specify a file type with the --type=TYPE format, or the --TYPE
+
format. For example, both --type=perl and --perl work.
+
  
Note that some extensions may appear in multiple types. For example,
+
Note that some extensions may appear in multiple types. For example, .pod files are both Perl and Parrot.
.pod files are both Perl and Parrot.
+
  
 
     --[no]actionscript .as .mxml
 
     --[no]actionscript .as .mxml
Line 174: Line 162:
 
     --[no]xml          .xml .dtd .xslt .ent
 
     --[no]xml          .xml .dtd .xslt .ent
 
     --[no]yaml        .yaml .yml
 
     --[no]yaml        .yaml .yml
</pre>
 
  
 
==External links==
 
==External links==

Revision as of 01:13, 24 June 2008

ack is a tool like grep, aimed at programmers with large trees of heterogeneous source code. ack is written purely in Perl, and takes advantage of the power of Perl's regular expressions.

Usage

Note: Taken directly from the official website.

  • Syntax:
ack [OPTION]... PATTERN [FILES]
  • Help:
ack --help

Search for PATTERN in each source file in the tree from cwd on down. If [FILES] is specified, then only those files/directories are checked. ack may also search STDIN, but only if no FILES are specified, or if one of FILES is "-".

Default switches may be specified in ACK_OPTIONS environment variable or an .ackrc file. If you want no dependency on the environment, turn it off with --noenv.

Example:

ack -i select

Searching

-i, --ignore-case 
Ignore case distinctions in PATTERN
-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

Search output

 --line=NUM            Only print line(s) NUM of each file
 -l, --files-with-matches
                       Only print filenames containing matches
 -L, --files-without-match
                       Only print filenames with no match
 -o                    Show only the part of a line matching PATTERN
                       (turns off text highlighting)
 --passthru            Print all lines, whether matching or not
 --output=expr         Output the evaluation of expr for each line
                       (turns off text highlighting)
 --match PATTERN       Specify PATTERN explicitly.
 -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
 -h, --no-filename     Suppress the prefixing filename on output
 -c, --count           Show number of lines matching per file
 -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.

File presentation

 --pager=COMMAND       Pipes all ack output through COMMAND.
                       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
 --[no]color           Highlight the matching text (default: on unless output is redirected, or on Windows)
 --flush               Flush output immediately, even when ack is used
                       non-interactively (when output goes to a pipe or file).

File finding

 -f                    Only print the files found, without searching.
                       The PATTERN must not be specified.
 -g REGEX              Same as -f, but only print files matching REGEX.
 --sort-files          Sort the found files lexically.

File inclusion/exclusion

 -a, --all-types       All file types searched;
                       Ignores CVS, .svn and other ignored directories
 -u, --unrestricted    All files and directories searched
 --[no]ignore-dir=name Add/Remove directory from the list of ignored dirs
 -n                    No descending into subdirectories
 -G REGEX              Only search files that match REGEX
 --perl                Include only Perl files.
 --type=perl           Include only Perl files.
 --noperl              Exclude Perl files.
 --type=noperl         Exclude Perl files.
                       See "ack --help type" for supported filetypes.
 --type-add TYPE=.EXTENSION[,.EXT2[,...]]
                       Files with the given EXTENSION(s) are recognized as
                       being of (the existing) type TYPE
 --type-set TYPE=.EXTENSION[,.EXT2[,...]]
                       Files with the given EXTENSION(s) are recognized as
                       being of type TYPE. This replaces an existing
                       definition for type TYPE.
 --[no]follow          Follow symlinks.  Default is off.
 Directories ignored by default:
   autom4te.cache, blib, _build, .bzr, .cdv, cover_db, CVS, _darcs, ~.dep,
   ~.dot, .git, .hg, ~.nib, .pc, ~.plst, RCS, SCCS, _sgbak and .svn
 Files not checked for type:
   /~$/           - Unix backup files
   /#.+#$/        - Emacs swap files
   /[._].*\.swp$/ - Vi(m) swap files
   /core\.\d+$/   - core dumps

Miscellaneous

 --noenv               Ignore environment variables and ~/.ackrc
 --help                This help
 --man                 Man page
 --version             Display version & copyright
 --thpppt              Bill the Cat

Filetypes

The following is the list of filetypes supported by ack. You can specify a file type with the --type=TYPE format, or the --TYPE format. For example, both --type=perl and --perl work.

Note that some extensions may appear in multiple types. For example, .pod files are both Perl and Parrot.

   --[no]actionscript .as .mxml
   --[no]asm          .asm .s
   --[no]batch        .bat .cmd
   --[no]binary       Binary files, as defined by Perl's -B op (default: off)
   --[no]cc           .c .h .xs
   --[no]cfmx         .cfc .cfm .cfml
   --[no]cpp          .cpp .cc .cxx .m .hpp .hh .h .hxx
   --[no]csharp       .cs
   --[no]css          .css
   --[no]elisp        .el
   --[no]erlang       .erl
   --[no]fortran      .f .f77 .f90 .f95 .f03 .for .ftn .fpp
   --[no]haskell      .hs .lhs
   --[no]hh           .h
   --[no]html         .htm .html .shtml .xhtml
   --[no]java         .java .properties
   --[no]js           .js
   --[no]jsp          .jsp .jspx .jhtm .jhtml
   --[no]lisp         .lisp .lsp
   --[no]lua          .lua
   --[no]make         Makefiles
   --[no]mason        .mas .mhtml .mpl .mtxt
   --[no]objc         .m .h
   --[no]objcpp       .mm .h
   --[no]ocaml        .ml .mli
   --[no]parrot       .pir .pasm .pmc .ops .pod .pg .tg
   --[no]perl         .pl .pm .pod .t
   --[no]php          .php .phpt .php3 .php4 .php5
   --[no]plone        .pt .cpt .metadata .cpy .py
   --[no]python       .py
   --[no]ruby         .rb .rhtml .rjs .rxml .erb
   --[no]scheme       .scm
   --[no]shell        .sh .bash .csh .tcsh .ksh .zsh
   --[no]skipped      Files, but not directories, normally skipped by ack (default: off)
   --[no]smalltalk    .st
   --[no]sql          .sql .ctl
   --[no]tcl          .tcl .itcl .itk
   --[no]tex          .tex .cls .sty
   --[no]text         Text files, as defined by Perl's -T op (default: off)
   --[no]tt           .tt .tt2 .ttml
   --[no]vb           .bas .cls .frm .ctl .vb .resx
   --[no]vim          .vim
   --[no]xml          .xml .dtd .xslt .ent
   --[no]yaml         .yaml .yml

External links