[Rio-pm] ack!
breno
breno em rio.pm.org
Quinta Setembro 6 09:37:47 PDT 2007
Se você (ainda) é usuário constante do "grep", vai se deliciar com o ack!
ack é um substituto do grep voltado para programadores com grandes
árvores de código, capaz de ignorar diretórios .svn/CVS/blib, entende
tipos de arquivos, utiliza expressões regulares e muito mais!
Veja as 10 maiores razões para usar ack ao invés de grep:
-------------------------------------------------------------------------------------
1. ack é Perl puro, então roda em Windows perfeitamente.
2. Busca por padrão já recursivamente através de diretórios,
ignorando diretórios .svn, CVS e outros sistemas de controle de
versão.
* O que você prefere digitar?
$ grep padrao $(find . | grep -v .svn)
$ ack padrao
3. ack ignora por padrão a maioria do lixo que você NÃO QUER procurar
* diretórios de sistemas de controle de versão
* blib, o diretório de build do Perl
* arquivos de backup, como foo~
* arquivos binários
4. Permite que você especifique os tipos de arquivos a serem
buscados, como --perl ou --nohtml.
* O que você prefere digitar?
$ grep padrao $(find . -name '*.pl' -or -name '*.pm' -or
-name '*.pod' | grep -v .svn)
$ ack --perl padrao
(Note que, além disso, o parâmetro --perl do ack também procura
pelo "shebang" (#!) em arquivos sem sufixo, coisa que o find não faz.
5. Capacidade de filtros de arquivos sem a necessidade de uma busca
por padrão, através de ack -f.
$ ack -f --perl > todos_os_meus_arquivos_perl
6. Resultados destacados com cores
.
7. Utiliza expressões regulares reais de Perl, e não um subconjunto GNU.
8. Permite que você especifique a saída usando as variáveis especiais do Perl
* Exemplo: ack '(Mr|Mr?s)\. (Smith|Jones)' --output='$&'
9. Muitos dos parâmetros de linha de comando são os mesmos do GNU grep:
-w faz busca apenas por palavras
-c mostra contagem por arquivo
-l mostra o nome do arquivo ao invés das linhas
etc.
10. O nome do comando é 25% menor. :-) Bah, é 50% menor se
compararmos com grep -r.
-----------------------------------
_ /|
\'o.O'
=(___)=
U ack!
Mais detalhes sobre a lista de discussão Rio-pm