Cuando agarro algo, el resultado siempre está en rojo. Sé que el comando grep --color
imprime el resultado en color, que por defecto es rojo. ¿Puedo cambiar el color?
Cuando agarro algo, el resultado siempre está en rojo. Sé que el comando grep --color
imprime el resultado en color, que por defecto es rojo. ¿Puedo cambiar el color?
Respuestas:
Puede cambiar el color de resaltado grep
utilizando una variable de entorno GREP_COLORS
, que puede establecer de esta manera:
export GREP_COLORS='ms=01;31'
Los números pueden aplicar estilo al texto, cambiar el color de primer plano o el color de fondo, o cambiar las fuentes.
Las condiciones iniciales para todas las GREP_COLORS
opciones son el estilo de texto, fuente y colores predeterminados del terminal. Restablecer cualquiera de estos volverá a los valores predeterminados del terminal, no a ninguno de grep
los valores predeterminados.
ᴀ;ʙ;…
- ;
separa opciones numéricas que desea combinar (por ejemplo, negrita amarillo sobre negro combina texto opciones 1
, 33
y 40
en 1;33;40
)+ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ se activa cuando usa esa opción numérica-ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ se apaga cuando usa esa opción numéricacolor
, green
, cyan
, Y grey
- en la sección "Estilo de texto", éstos se refieren al color de primer planocolors
- en la sección "Estilo de texto", esto se refiere tanto al color de primer plano como al color de fondothis color
- en la sección "Colores de primer plano", esto se refiere al color de primer plano; en la sección "Colores de fondo", esto se refiere al color de fondoUna cadena vacía o 0
restablece todos los estilos de texto y restablece ambos colores a los valores predeterminados, pero no restablece la fuente a los valores predeterminados.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
Tenga en cuenta que el TTY no GUI no proporciona una serie de color de fondo más brillante.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
El cuadro de arriba es una captura de pantalla del contenido publicado en "Código de escape ANSI, colores de 8 bits" en Wikipedia , escrito por CMG Lee et al. el 24 de febrero de 2016 y posteriores , y con licencia de los autores bajo la licencia de copyright CC BY-SA 3.0 y la licencia de copyright GFDL .
Los colores de la tabla de 256 colores anterior se pueden usar de la siguiente manera:
38;5;ɴ
- reemplace ɴ con el valor de un color en particular en la tabla anterior para cambiar el color de primer plano al color más cercano que admita el terminal48;5;ɴ
- reemplace ɴ con el valor de un color particular en el cuadro anterior para cambiar el color de fondo al color más cercano que admita el terminalPor ejemplo, 38;5;214;48;5;30
establecerá el primer plano en color 214
y el fondo en color 30
, dando un resultado naranja sobre verde azulado en los terminales que lo admiten.
Tenga en cuenta que no todos los terminales admiten los 256 colores, por lo que es importante darse cuenta de que el color elegido podría no usarse. Solo se utilizará el color compatible más cercano al elegido.
Por ejemplo, el TTY sin GUI solo admite los 16 colores básicos para el primer plano y los 8 colores básicos para el fondo, por lo que los colores más cercanos que terminan siendo utilizados pueden no ser lo que espera. Como ejemplo, la selección naranja sobre verde azulado arriba ( 38;5;214;48;5;30
) se muestra como amarillo sobre negro en el TTY sin GUI, ya que esos son los colores compatibles más cercanos.
10
es la fuente predeterminada 11
a través de 20
posibles fuentes alternativas ( 20
generalmente significa una fuente 𝕱𝖗𝖆𝖐𝖙𝖚𝖗 en los raros terminales que lo admiten). Solo 10
y 12
parece existir por defecto en el TTY que no es GUI, y ninguno existe en el Terminal GNOME o xterm
.
grep
no cambia correctamente las fuentes antes de salir, así que ejecútelo reset
si se atasca en una fuente no deseada después de grep
regresar al 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 │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
Fuentes de la sección "Opciones numéricas":
● "Código de escape ANSI, parámetros SGR (Seleccionar representación gráfica)" en Wikipedia
● Verificación experimental en el terminal GNOMExterm
y TTY sin modo GUI en Ubuntu 16.04
El valor predeterminado de GREP_COLORS
es'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
El significado de cada elemento aceptado GREP_COLORS
puede consultarse en la página del manual de GNU.org .
Para completar, y como lo señaló @damadam, debe agregarlo export
a su .bashrc
para guardar los cambios.
Relacionado:
38;5;ɴ
, donde ɴ debe reemplazarse con uno de los valores de color. Para el fondo, úselo 48;5;ɴ
de la misma manera. Por ejemplo, 38;5;214;48;5;30
debería darle naranja sobre verde azulado. Si no es así, es posible que su terminal no admita 256 colores. Por ejemplo, el TTY no GUI solo admite 16 colores para el primer plano y 8 para el fondo y seleccionará los colores de primer plano y de fondo de los 16 y 8 más cercanos al naranja en verde azulado, que es amarillo sobre negro.
Además de la respuesta de @M. Becerra, no olvides agregar esto export
adentro ~/.bashrc
. Puedes hacerlo así:
nano ~/.bashrc
y escriba ahora su export
:
export GREP_COLORS='ms=01;33:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Esto establece los grep
resultados en amarillo, y no necesito rehacer el export
terminal después del reinicio o la computadora.
<<<hello GREP_COLORS='ms=5;104' grep '.*'
una vez! Puede encontrar una lista de códigos, por ejemplo, aquí (sección 6).