Quando eu grep alguma coisa, o resultado está sempre em vermelho. Eu sei que o comando grep --color
imprime o resultado em cores, que por padrão é vermelho. Posso mudar a cor?
Quando eu grep alguma coisa, o resultado está sempre em vermelho. Eu sei que o comando grep --color
imprime o resultado em cores, que por padrão é vermelho. Posso mudar a cor?
Respostas:
Você pode alterar a cor de destaque grep
usando uma variável de ambiente GREP_COLORS
, que pode ser definida assim:
export GREP_COLORS='ms=01;31'
Os números podem estilizar o texto, alterar a cor do primeiro plano ou a cor do plano de fundo ou alterar as fontes.
As condições iniciais para todas as GREP_COLORS
opções são o estilo de texto, fonte e cores padrão do terminal. A redefinição de qualquer um desses itens reverterá para os padrões do terminal, e não para os padrões do terminal grep
.
ᴀ;ʙ;…
- ;
separa opções numéricas que você quiser combinar (por exemplo, negrito amarelo sobre preto combina texto opções 1
, 33
e 40
em 1;33;40
)+ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ é ativado quando você usa essa opção numérica-ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ é desativado quando você usa essa opção numéricacolor
, green
, cyan
, E grey
- na seção "estilo de texto", referem-se a cor de primeiro planocolors
- na seção "Estilo do texto", refere-se à cor do primeiro plano e da cor do plano de fundothis color
- na seção "Cores do primeiro plano", refere-se à cor do primeiro plano; na seção "Cores do plano de fundo", refere-se à cor do plano de fundoUma sequência vazia ou 0
redefine todo o estilo do texto e redefine as duas cores para os padrões, mas não redefine a fonte para o padrão.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ │ «reset style+colors» │ «reset style+colors» │ «reset style+colors» │
│ 0 │ «reset style+colors» │ «reset style+colors» │ «reset style+colors» │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 1 │ +bold, +brighter color │ +bold, +brighter color │ +brighter color, │
│ │ │ │ -forced grey │
│ 2 │ +fainter color │ +fainter color │ +forced grey │
│ 3 │ +italic │ +italic │ +forced green │
│ │ │ │ ● overrides 2 and 4 │
│ 4 │ +underline │ +underline │ +forced cyan │
│ │ │ │ ● overrides 2 │
│ 5 │ «no effect» │ +blink │ «no effect» │
│ 7 │ +invert colors │ +invert colors │ +invert colors │
│ 8 │ +invisible │ +invisible │ «no effect» │
│ │ │ ● underline appears │ │
│ 9 │ +strikethrough │ +strikethrough │ «no effect» │
├─────┼─────────────────────────┤ ├───────────────────────┤
│ 21 │ -bold, -brighter color, │ +double underline │ -brighter color, │
│ │ -fainter color ├─────────────────────────┤ -forced grey │
│ 22 │ -bold, -brighter color, │ -bold, -brighter color, │ -brighter color, │
│ │ -fainter color │ -fainter color │ -forced grey │
│ 23 │ -italic │ -italic │ -forced green │
│ 24 │ -underline │ -underline, │ -forced cyan │
│ │ │ -double underline │ │
│ 25 │ «no effect» │ -blink │ «no effect» │
│ 27 │ -invert colors │ -invert colors │ -invert colors │
│ 28 │ -invisible │ -invisible │ «no effect» │
│ 29 │ -strikethrough │ -strikethrough │ «no effect» │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ 39 │ «reset this color» │ «reset this color» │ «reset this color» │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 30 │ very dark grey │ black │ black │
│ 31 │ dull red │ red │ light red │
│ 32 │ dull green │ light green │ light green │
│ 33 │ dull yellow │ yellow │ yellow │
│ 34 │ greyish blue │ dark blue │ sky blue │
│ 35 │ dull purple │ purple │ purple │
│ 36 │ teal │ cyan │ cyan │
│ 37 │ light grey │ light grey │ light grey │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 90 │ dark grey │ dull grey │ dull grey │
│ 91 │ red │ bright red │ bright red │
│ 92 │ lime green │ bright green │ bright green │
│ 93 │ yellow │ bright yellow │ pure yellow │
│ 94 │ light greyish blue │ dull blue │ deep blue │
│ 95 │ light purple │ magenta │ magenta │
│ 96 │ cyan │ bright cyan │ bright cyan │
│ 97 │ off white │ white │ white │
├─────┴──────┬──────────────────┴─────────────────────────┴───────────────────────┤
│ 38;2;ʀ;ɢ;ʙ │ replace ʀ, ɢ, and ʙ with RGB values from 0 to 255 │
│ │ for closest supported color (non-GUI TTY has only 16 colors!) │
│ 38;5;ɴ │ replace ɴ with value from 256-color chart below │
│ │ for closest supported color (non-GUI TTY has only 16 colors!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
Observe que o TTY não GUI não fornece uma série de cores de fundo mais brilhantes.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ 49 │ «reset this color» │ «reset this color» │ «reset this color» │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 40 │ very dark grey │ black │ black │
│ 41 │ dull red │ red │ light red │
│ 42 │ dull green │ light green │ light green │
│ 43 │ dull yellow │ yellow │ yellow │
│ 44 │ greyish blue │ dark blue │ sky blue │
│ 45 │ dull purple │ purple │ purple │
│ 46 │ teal │ cyan │ cyan │
│ 47 │ light grey │ light grey │ light grey │
├─────┼─────────────────────────┼─────────────────────────┼╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶┤
│ 100 │ dark grey │ dull grey │ black │
│ 101 │ red │ bright red │ light red │
│ 102 │ lime green │ bright green │ light green │
│ 103 │ yellow │ bright yellow │ yellow │
│ 104 │ light greyish blue │ dull blue │ sky blue │
│ 105 │ light purple │ magenta │ purple │
│ 106 │ cyan │ bright cyan │ cyan │
│ 107 │ off white │ white │ light grey │
├─────┴──────┬──────────────────┴─────────────────────────┴───────────────────────┤
│ 48;2;ʀ;ɢ;ʙ │ replace ʀ, ɢ, and ʙ with RGB values from 0 to 255 │
│ │ for closest supported color (non-GUI TTY has only 8 colors!) │
│ 48;5;ɴ │ replace ɴ with value from 256-color chart below │
│ │ for closest supported color (non-GUI TTY has only 8 colors!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
O gráfico acima é uma captura de tela do conteúdo publicado em "Código de escape ANSI, cores de 8 bits" na Wikipedia , de autoria de CMG Lee et al. em 24 de fevereiro de 2016 e posteriores , e licenciado pelos autores sob ambos a licença de copyright CC BY-SA 3.0 e a licença de copyright GFDL .
As cores da tabela de 256 cores acima podem ser usadas da seguinte maneira:
38;5;ɴ
- substitua ɴ pelo valor de uma cor específica na tabela acima para alterar a cor primeiro plano para a cor mais próxima que o terminal suportar48;5;ɴ
- substitua ɴ pelo valor de uma cor específica na tabela acima para alterar a cor de fundo para a cor mais próxima que o terminal suportarPor exemplo, 38;5;214;48;5;30
definirá o primeiro plano como cor 214
e o fundo como cor 30
, fornecendo um resultado laranja-azul-petróleo nos terminais que o suportam.
Observe que nem todos os terminais suportam todas as 256 cores; portanto, é importante perceber que a cor escolhida pode não ser usada. Somente a cor suportada mais próxima da escolhida será usada.
Por exemplo, o TTY não GUI suporta apenas as 16 cores básicas em primeiro plano e as 8 cores básicas em segundo plano, portanto, as cores mais próximas que acabam sendo usadas podem não ser as esperadas. Como exemplo, a seleção de laranja na cerceta acima (38;5;214;48;5;30
) é mostrada em amarelo-preto no TTY não GUI, pois essas são as cores suportadas mais próximas.
10
é a fonte padrão. 11
through 20
são fontes alternativas em potencial ( 20
geralmente significa uma fonte in nos raros terminais que a suportam). Somente 10
e 12
parece existir por padrão no não-GUI TTY, e nenhum existe no GNOME Terminal ou xterm
.
grep
não alterna corretamente as fontes antes de sair, portanto, execute reset
se você ficar preso em uma fonte indesejada depois de grep
retornar ao shell.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ 10 │ «no effect» │ «no effect» │ «reset font» │
│ 11 │ «no effect» │ «no effect» │ -messed up font │
│ 12 │ «no effect» │ «no effect» │ +messed up font │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
Fontes da seção "Opções numéricas":
● "Código de escape ANSI, parâmetros SGR (Select Graphic Rendition)" na Wikipedia
● Verificação experimental no GNOME Terminalxterm
e TTY no modo GUI no Ubuntu 16.04
O valor padrão de GREP_COLORS
é'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
O significado de cada elemento aceito GREP_COLORS
pode ser verificado em página de manual do GNU.org .
Para conclusão, e conforme indicado por @damadam, você precisa adicioná-lo export
ao seu .bashrc
para salvar as alterações.
Palavras-chave:
38;5;ɴ
, onde ɴ deve ser substituído por um dos valores de cor. Para segundo plano, use 48;5;ɴ
da mesma maneira. Por exemplo, 38;5;214;48;5;30
você deve dar laranja na cerceta. Caso contrário, seu terminal pode não suportar 256 cores. Por exemplo, o TTY que não é da GUI suporta apenas 16 cores em primeiro plano e 8 em segundo plano e seleciona as cores de primeiro e segundo plano entre as 16 e 8 mais próximas da laranja na cerceta, que é amarela no preto.
Além da resposta de @M. Becerra, não se esqueça de adicionar isso export
dentro ~/.bashrc
. Você pode fazer assim:
nano ~/.bashrc
e digite agora seu export
:
export GREP_COLORS='ms=01;33:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Isso define os grep
resultados para amarelo e não preciso refazer o export
terminal após a reinicialização ou o computador.
<<<hello GREP_COLORS='ms=5;104' grep '.*'
uma vez! Uma lista de códigos pode ser encontrada, por exemplo, aqui (seção 6).