Я рекомендую. — Ack! - лучше, чем grep
Когда вы ищите что-то по файлам из локальной копии репозитория git, svn или какой-то другой с помощью grep, то не раз сталкивались с тем, что поиск уходил в скрытые папки .git и .svn. А само отображение найденных строк? Вы никогда не думали о том, что оно могло бы быть получше сделано?
На сайте Ack! с говорящим названием (Better than grep — лучше чем grep) на единственной странице с весьма скромным дизайном представлена утилита ack. Прелесть ее в том, что она уже настроена на поиск строк в файлах, которые находятся на учете одной из систем контроля версий. Конечно, можно спорить и говорить, что если правильно использовать grep (возможно, вместе с find и другими утилитами), то нет смысла выдумывать что-то еще, однако я все же настоятельно рекомендую вам попробовать эту утилиту в действии.
Чтобы искать в текущей папке с файлами проекта достаточно сделать:
и результат не заставит себя ждать. Найденные строки пронумерованы и сгруппированы по документам, в которых они были найдены, а имена документов написаны над каждой группой. Кроме того ack использует цвета, если они доступны в вашем терминале.
Кроме того, можно указать типы файлов, в которых производится (или не производится) поиск — классификация происходит по расширению файлов, поэому одно расширение может попасть в несколько групп.
По умолчанию Ack не будет искать в следующих директориях: autom4te.cache, blib, _build, .bzr, .cdv, cover_db, CVS, _darcs, ~.dep, ~.dot, .git, .hg, ~.nib, .pc, ~.plst, RCS, SCCS, _sgbak и .svn, а также будет игнорировать файлы по следующим маскам:
Установить ack можно разными способами:
На сайте Ack! с говорящим названием (Better than grep — лучше чем grep) на единственной странице с весьма скромным дизайном представлена утилита ack. Прелесть ее в том, что она уже настроена на поиск строк в файлах, которые находятся на учете одной из систем контроля версий. Конечно, можно спорить и говорить, что если правильно использовать grep (возможно, вместе с find и другими утилитами), то нет смысла выдумывать что-то еще, однако я все же настоятельно рекомендую вам попробовать эту утилиту в действии.
Чтобы искать в текущей папке с файлами проекта достаточно сделать:
ack someWord
и результат не заставит себя ждать. Найденные строки пронумерованы и сгруппированы по документам, в которых они были найдены, а имена документов написаны над каждой группой. Кроме того ack использует цвета, если они доступны в вашем терминале.
Кроме того, можно указать типы файлов, в которых производится (или не производится) поиск — классификация происходит по расширению файлов, поэому одно расширение может попасть в несколько групп.
По умолчанию Ack не будет искать в следующих директориях: autom4te.cache, blib, _build, .bzr, .cdv, cover_db, CVS, _darcs, ~.dep, ~.dot, .git, .hg, ~.nib, .pc, ~.plst, RCS, SCCS, _sgbak и .svn, а также будет игнорировать файлы по следующим маскам:
- /~$/ — резервные копии файлов в Unix системах
- /#.+#$/ — специальный файл Emacs
- /[._].*\.swp$/ — специальный файл Vi(m)
- /core\.\d+$/ — дампы ядра
Установить ack можно разными способами:
- Установите CPAN модуль App::Ack — этот вариант рекоммендуется пользователям Perl (да, ack написан на perl)
- Если вы не хотите разбираться с установкой и настройкой оболочки CPAN — установите Ack в качестве самостоятельной утилиты, не требующей никаких дополнительных Perl модулей. Скачать скрипт можно вот здесь, а чтобы быстро установить его в домашнюю директорию выполните:
1
2curl http://betterthangrep.com/ack-standalone > ~/bin/ack
chmod 0755 !$
- Для пользователей Mac — версия из Macport
- Для пользователей Ubuntu — пакет ack-grep
- Для пользователей Fedora — пакет ack
- Для пользователей Arch Linux — пакет ack в AUR
- Для пользователей Gentoo — sys-apps/ack