Se eu usar dois grep
comandos consecutivos , por exemplo:
echo "foo bar" | grep foo | grep bar
Então o primeiro padrão ("foo") não é realçado. De fato, parece que o grep remove os códigos de cores de sua entrada. Existe alguma maneira de evitar isso?
Respostas:
Use
--color=always
.grep
detecta se a saída é para um tubo (ou arquivo). Você quase nunca deseja cores quando a saída é arquivar - pois são seqüências de escape para o terminal. Tipicamente:por exemplo:
Para substituir o uso
--color=always
.Exemplo:
Tendo arquivo:
Então
iria colorir
ID
,2013
efoo
.iria colorir
ID
efoo
, mas não2013
.1 Importante: Você também deve se lembrar que a desordem adicionadadas cores é passada para o próximo comando da cadeia. Depois que o ID é colorido, você não pode (com facilidade), corresponder, por exemplo
ID=111
.Em alguma ocasião, talvez alguém queira cores terminais em arquivo . Tente por exemplo
Embora o arquivo resultante tenha portabilidade muito limitada.
A coloração em si também é uma extensão.
Conforme mencionado pelo bom @slm , você pode adicionar:
para o seu
.bashrc
etc, mas não, a menos que você, por algum motivo, realmente entenda as implicações e ainda queira fazê-lo. Em muitos aspectos, isso se romperiagrep
devido ao fato mencionado acima 1 .Adicione um
alias
se você o usa com frequência.GREP_OPTIONS
e--color
ter três opções :never
,auto
ealways
. Os dois primeiros devem ser os únicos consideradosGREP_OPTIONS
.Você também pode conferir
GREP_COLORS
nasman
páginas ou no gnu grep .fonte
export GREP_OPTIONS="--color=always"
em um .bashrc torna as opções os padrões para qualquer greps, e você o acertou em cheio!ls
e nos coreutils do gnu.