Páginas

Thursday, September 15, 2011

Grep e Less com cores!

Esta é uma nota mental.

egrep -r --include="*.rkt" "[a-z-]+#" . --color=always | less -R

Para usar o Grep com cores, geralmente temos um alias grep='grep --color=auto' no nosso ~/.bashrc.

Mas acontece que muitas das vezes o resultado é grande é fazemos um pipe pro less. Como triste consequência perdemos as cores...
Para forçar o grep (egrep, fgrep, ...) a exibir cores use o --color=always, assim ele manda o output pro less com cores.
A opção -R do less faz com que ele interprete os caracteres de escape de cores do terminal.

grep "alguma coisa" /caminho/da/busca --color=always | less -R

Nota: pode ser usado também com o more:

grep "alguma coisa" /caminho/da/busca --color=always | more

[Update]
Como meu amigo Breno Oliveira sugeriu, uma alternativa interessante ao grep é o ack.
http://betterthangrep.com/

Usando o ack o comando fica:

ack "regexp perl" [caminho] --color | less -R

2 comments:

Denilson Sá said...

Depois que conheci o ack, raramente usei novamente o grep quando procuro por algo recursivamente (dentro de um diretório, normalmente dentro de vários arquivos de código-fonte).

ack é mais prático de usar, pois ele naturalmente já funciona recursivamente, ignorando arquivos inúteis (.git, .svn, .hg), e imprime um output colorido fácil de ler.

Não é bom para scripts (para isso, use o grep), mas é excelente no dia-a-dia.

Ronald Andreu Kaiser said...

ack-grep tbm eh bem legal pro dia-a-dia, ;)