Ack: um Grep melhor
Se você tem alguma experiência no uso da linha de comando do Linux, sem dúvida já usou “grep” para pesquisar strings de texto, sejam elas provenientes de arquivos ou de comandos. Existe uma maneira melhor de fazer isso, chamada Ack.
Ack é um programa escrito em Perl que pretende substituir o venerável e antigo Grep, que existe desde o início dos anos 70. (Caso você esteja se perguntando, grep significa "Global Regular Expression Print".)
O autor de Ack, Andy Lester, está tão confiante de que Ack é melhor que grep que o site de seu projeto se chama bestthangrep.com.
Você pode conseguir isso de algumas maneiras. Se você for um usuário regular de Perl, poderá usar o CPAN para instalá-lo, talvez com Perlbrew, conforme descrevi em um artigo anterior. Cpanminus é um cliente CPAN leve e popular. Para instalar o Ack com ele, basta usar este comando:
cpanm App::Ack
Claro, se você estiver usando o Ubuntu e quiser instalá-lo via apt-get, você também pode fazer isso, embora o Ubuntu tenda a estar atrás da versão mais recente do desenvolvedor. Basta usar este comando:
sudo apt-get install ack-grep
Você pode usar o Ack da mesma forma que usa o grep. Por exemplo, para encontrar o nome “maketecheasier” no arquivo mte.txt, basta usar este comando:
ack maktecheasier mte.txt
Ou você pode redirecionar a saída para ele:
cat | ack maketecheasier
Um dos principais recursos que os novos usuários notarão é que ele dá um belo destaque visual à sua string de pesquisa na saída, o que significa que você pode ver exatamente se está realmente correspondendo ao que procura.
Se você estiver pesquisando com uma expressão regular complicada, poderá ver exatamente o que corresponde e, ao mesmo tempo, detectar falsos positivos.
Outro recurso útil é que o Ack pesquisa automaticamente os arquivos de forma recursiva. Isso significa que o Ack não apenas pesquisará todos os arquivos em um diretório, se você fornecer um, mas se esse diretório contiver outros diretórios, ele também os pesquisará, até chegar ao final da árvore de diretórios. Isso é especialmente útil para programadores (e se você for um, provavelmente já sabe o que significa recursivo), mas também é muito útil se você estiver procurando por um padrão em vários arquivos de texto simples.
E por falar em programação, você pode restringir sua pesquisa a uma variedade de linguagens de programação populares. Aqui está um exemplo usando Perl:
ack --perl 'somepattern' /my/directory
Você pode encontrar ainda mais exemplos na seção "Tipos de arquivo do Ack" da documentação.
Como Ack é escrito em Perl, ele é automaticamente compatível com as expressões regulares do Perl. Expressões regulares são um tipo de pesquisa de texto superprecisa, permitindo encontrar padrões de texto muito específicos.
O melhor e mais engraçado recurso é a opção "--thpppt
", que abre um desenho artístico ASCII de Bill, o Gato:
_ /| \'o.O' =(___)= U ack --thppt!
Como o Unix e o Linux tornam relativamente fácil escrever programas, é possível criar facilmente substitutos para programas comuns do sistema. Ack é um daqueles que mostra a criatividade das comunidades Perl e Unix/Linux.