Less e Grep: Obtendo resultados coloridos ao usar um pipe do grep para menos

216

Eu uso muito a opção --colour do grep, mas freqüentemente uso menos também. Como posso canalizar o grep para menos e ainda preservar a cor. (Ou isso é possível?)

grep "search-string" -R * --colour | less 

EDITAR :

Estou procurando uma solução direta ou algo equivalente a isso.

    
por Jeremy Powell 04.09.2009 / 23:46

5 respostas

247

Quando você simplesmente executa grep --color , isso indica grep --color=auto , que detecta se a saída é um terminal e, se sim, ativa as cores. No entanto, quando detecta um cano, ele desabilita a coloração. O seguinte comando:

grep --color=always -R "search string" * | less

Sempre ativará a coloração e sobrepõe a detecção automática, e você obterá o realce de cor em less .

EDITAR: Embora o uso de apenas less funcione para mim, talvez a versão mais antiga exija que o -R flag manipule as cores, conforme sugerido aqui.

    
por 05.09.2009 / 00:35
27

Você pode colocar isso no seu arquivo .bashrc :

export GREP_OPTIONS="--color=always"

ou crie um alias como este:

alias grepc="grep --color=always"

e você precisará usar a opção -R para less , conforme indicado por ela a partir de

    
por 05.09.2009 / 12:46
4

Nesse caso, eu prefiro realmente criar pequenos arquivos sh e colocá-los em /usr/local/bin .
Eu costumo usar grep da maneira recursiva no pwd , então é meu roteiro pessoal:

#!/bin/sh
grep --color=always -r "$@" . | less -R

E então eu acabei de copiá-lo como /usr/local/bin/g (sim, eu uso muito)

    
por 30.09.2013 / 23:48
1

Não alias "grep", melhor para alias "less", que nunca é usado por shells. Em seu .bashrc , basta colocar: alias less="less -r" .

    
por 20.01.2013 / 11:28
0

Eu preciso correr

grep --color=always -R "search string" * | less - r

com o sinalizador -r após less , para que isso seja executado.

    
por 18.01.2018 / 11:51