Ack is a fantastic (and portable!) replacement
for grep
. It's aimed at programmers and by default will only search a
white-list of known file-extensions so that it will only search the "code" in a
directory.
ack
looks at your ~/.ackrc
file to get any customized "default" settings
you want. I use my (user-level) ~/.ackrc
to enable some personalized default options,
e.g. color-ize output, always use a $PAGER
, sort the output by filename, etc.
But sometimes I want to have directory-level (or project-level) additional settings, namely to always exclude/ignore certain directories when searching at the project-level.
For example, here are the exclusions I want for my Octopress build environment:
So, I wrote-up a little ack
wrapper script: ack-wrapper.
It crawls the directory tree looking for an additional "local" .ackrc
file,
starting from the current working directory crawling up through any parent
directories until we find a .ackrc
file (or until we reach either $HOME
or
/
).
(Update 2012-03-10: It looks like Ack v2.0 supports PWD .ackrc files natively, and has some other neat enhancements to boot!)
Usage
- Grab the latest version of the ack-wrapper script,
drop it somewhere in your
$PATH
(I like having a~/bin/
directory), and make sure it's executable (chmod 755 path/to/ack-wrapper
). - Update your
.bashrc
toalias ack=ack-wrapper
, so that runningack ...
will first call the wrapper script, search for any "local".ackrc
files, insert any additional options found into the original supplied command-line arguments, and finally call the (real)ack
executable.