December 10, 2007
Older: Book Review: Pro Active Record
Newer: KYTCR Part III: Automating Problem Resolution
Ack, A Code Searcher
Ack is a tool for programmers similar to grep but made for heterogeneous source code trees. What I was impressed with upon downloading and installing it was the highlighting it does all in the terminal.
I’ve used it a few times searching through rails trunk as TextMate seems to dog when you get a bunch of files in one project. It also prominently displays the file path which you can then copy and open with the mate command.
A few reasons you might want to use ack (from the ack site, there are more there as well):
- it’s really fast
- it runs on windows
- the standalone version has no dependencies so you can throw it in ~/bin
- searches recursively through directories by default, while ignoring .svn, CVS and other VCS directories
- let’s you specify file types
$ ack --perl pattern
Installation is really easy on a mac. Just grab the standalone version and throw it in ~/bin/ack. Note: make sure that it is executable (chmod u+x
) and that ~/bin is in your path. Enjoy.
Update: Ack can now be used in textmate with a bundle
6 Comments
Dec 11, 2007
Now all we need is an ack_in_project command for Textmate.
Dec 11, 2007
GNU grep has a —color feature that highlights the matching text in the terminal. It’s enabled by default on many GNU/Linux distros. GNU grep also has a recursive option, along with a list of patterns to exclude. You can use the $GREP_OPTIONS environment variable to set defaults for these options.
Dec 11, 2007
Also: http://rak.rubyforge.org/
Basically Ack in Ruby
Dec 11, 2007
great find, tnx!
Dec 11, 2007
Craig: grep’s recursive options get very tedious when you want to exclude directories. The list of patterns to exclude are also very tedious, and grep won’t look inside the file to determine filetype like ack will.
Yes, you can do most of what ack does with grep, but why?
John: Glad you dig ack!
Dec 12, 2007
I added erb. Rails 2
ruby => [qw( rb rhtml rjs rxml )],
to
ruby => [qw( erb rb rhtml rjs rxml )],
Sorry, comments are closed for this article to ease the burden of pruning spam.