Difference between revisions of "Ack"
(→Usage) |
|||
Line 3: | Line 3: | ||
==Usage== | ==Usage== | ||
''Note: Taken directly from the official website.'' | ''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. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | 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) |
− | + | ||
--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 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 | ||
− | + | ===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. | |
− | + | ||
− | + | ||
− | The following is the list of filetypes supported by ack. | + | |
− | specify a file type with the --type=TYPE format, or the --TYPE | + | |
− | format. | + | |
− | Note that some extensions may appear in multiple types. | + | 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 | ||
− | |||
==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.
Contents
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