Можно ли имитировать ack, используя grep с правильной комбинацией параметров?

391
user908393

На моем локальном компьютере установлен ack-grep, и я считаю его незаменимым для быстрого «подбора» кодовой базы при отладке.

Однако на моем дешевом виртуальном хостинге ack-grep нет. В одном из отзывов о bestthangrep.com упоминается

Руб Гольдберг беспорядок находок / grep / xargs

это звучит как то, что мне нужно, но идет в противоположном направлении.

Кто-нибудь знает, что это может быть?

2

2 ответа на вопрос

4
grawity

Фактическая команда названа ack. (Некоторые дистрибьюторы, возможно, переименовали его ack-grepиз-за конфликта имен.) Официальный веб-сайт действительно является http://betterthangrep.com, и у него есть длинный список способов установки, даже если в вашем дистрибутиве его нет ack.

Например, вы можете скачать App :: Ack из CPAN в Perl (используя cpanminus ):

cpanm --sudo App::Ack 

Или получите «автономную» версию:

curl http://betterthangrep.com/ack-standalone > ~/bin/ack chmod +x ~/bin/ack 
Потрясающе, спасибо. Linux FTW user908393 12 лет назад 0
4
Andy Lester

Да, вы можете сделать это вручную, и на самом деле вы должны знать, как это сделать вручную. Например, если вы делали

ack function_name --php 

Вы можете сделать это (в значительной степени) как

find . -name '*.php' | xargs grep function_name 

Он длиннее, и вы можете сделать из него псевдоним или сценарий оболочки, но полезно знать, как это сделать, просто чтобы знать, как это сделать.

Ваш вопрос заставляет меня улыбаться, потому что, как правило, то, что я слышу старой гвардии Unix Седобородые говорят «Вам не нужно ack, просто использовать find, xargsи grep.» Здорово видеть, что кто-то идет на это с другой стороны.

Ужасно близко к «Вам не нужно это новомодное колесо, просто заново изобретите свое». grawity 12 лет назад 1
Да, конечно, но в эту битву я перестал вступать. Если люди хотят сделать это по-старому, потому что так говорят Кен и Деннис, то это их дело. Andy Lester 12 лет назад 1

Похожие вопросы