Quando grep qualcosa, il risultato è sempre in rosso. So che il comando grep --color
stampa il risultato a colori, che per impostazione predefinita è rosso. Posso cambiare il colore?
Quando grep qualcosa, il risultato è sempre in rosso. So che il comando grep --color
stampa il risultato a colori, che per impostazione predefinita è rosso. Posso cambiare il colore?
Risposte:
È possibile modificare il colore di evidenziazione grep
utilizzando una variabile di ambiente GREP_COLORS
, che è possibile impostare in questo modo:
export GREP_COLORS='ms=01;31'
I numeri possono modellare il testo, cambiare il colore di primo piano o il colore di sfondo o cambiare i caratteri.
Le condizioni iniziali per tutte le GREP_COLORS
opzioni sono lo stile di testo, il carattere e i colori predefiniti del terminale. Il ripristino di uno qualsiasi di questi ripristinerà le impostazioni predefinite del terminale, non quelle grep
predefinite.
ᴀ;ʙ;…
- ;
separa opzioni numeriche che si desidera combinare (ad esempio, grassetto giallo su nero combina testo opzioni 1
, 33
e 40
in 1;33;40
)+ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ si attiva quando si utilizza quell'opzione numerica-ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ viene disattivato quando si utilizza quell'opzione numericacolor
, green
, cyan
, E grey
- nella sezione "Testo styling", questi si riferiscono al colore di primo pianocolors
- nella sezione "Stile del testo", si riferisce sia al colore di primo piano sia al colore di sfondothis color
- nella sezione "Colori di primo piano", si riferisce al colore di primo piano; nella sezione "Colori di sfondo", si riferisce al colore di sfondoUna stringa vuota o 0
reimposta tutto lo stile del testo e ripristina entrambi i colori sui valori predefiniti, ma non ripristina il carattere sui valori predefiniti.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
Si noti che il TTY non GUI non fornisce una serie di colori di sfondo più luminosa.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
Sopra il grafico c'è uno screenshot del contenuto pubblicato in "Codice di escape ANSI, colori a 8 bit" su Wikipedia , scritto da CMG Lee et al. il 24 febbraio 2016 e versioni successive e concesso in licenza dagli autori in base alla licenza di copyright CC BY-SA 3.0 e alla licenza di copyright GFDL .
I colori della tabella a 256 colori sopra possono essere usati come segue:
38;5;ɴ
- sostituire ɴ con il valore di un colore particolare nella tabella sopra per cambiare il colore di primo piano con il colore più vicino supportato dal terminale48;5;ɴ
- sostituire ɴ con il valore di un colore particolare nella tabella sopra per cambiare il colore di sfondo con il colore più vicino supportato dal terminaleAd esempio, 38;5;214;48;5;30
imposterà il primo piano sul colore 214
e lo sfondo sul colore 30
, dando un risultato arancione-verde acqua sui terminali che lo supportano.
Si noti che non tutti i terminali supportano tutti i 256 colori, quindi è importante rendersi conto che il colore scelto potrebbe non essere utilizzato. Verrà utilizzato solo il colore supportato più vicino a quello scelto.
Ad esempio, il TTY non GUI supporta solo i 16 colori di base per il primo piano e gli 8 colori di base per lo sfondo, quindi i colori più vicini che finiscono per essere utilizzati potrebbero non essere quelli previsti. Ad esempio, la selezione arancione-verde acqua sopra ( 38;5;214;48;5;30
) mostra come giallo-nero nel TTY non-GUI, poiché quelli sono i colori supportati più vicini.
10
è il carattere predefinito. 11
attraverso 20
sono potenziali caratteri alternativi (di 20
solito significa un carattere 𝕱𝖗𝖆𝖐𝖙𝖚𝖗 nei rari terminali che lo supportano). Solo 10
e 12
sembra esistere di default nel TTY non GUI, e nessuno esiste nel Terminale GNOME o xterm
.
grep
non ripristina correttamente i caratteri prima di uscire, quindi esegui reset
se rimani bloccato in un carattere indesiderato dopo il grep
ritorno alla 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 │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
Fonti della sezione "Opzioni numeriche":
● "Codice di escape ANSI, parametri SGR (Select Graphic Rendition)" su Wikipedia
● Verifica sperimentale sul terminale GNOMExterm
e TTY non in modalità GUI su Ubuntu 16.04
Il valore predefinito di GREP_COLORS
è'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Il significato di ogni elemento accettato GREP_COLORS
può essere verificato nella pagina del manuale di GNU.org .
Per il completamento, e come sottolineato da @damadam, è necessario aggiungere il export
proprio .bashrc
per salvare le modifiche.
Relazionato:
38;5;ɴ
, dove ɴ deve essere sostituito con uno dei valori di colore. Per lo sfondo, utilizzare 48;5;ɴ
allo stesso modo. Ad esempio, 38;5;214;48;5;30
dovrebbe darti l'arancia sull'alzavola. In caso contrario, il terminale potrebbe non supportare 256 colori. Ad esempio, il TTY non GUI supporta solo 16 colori per il primo piano e 8 per lo sfondo e sceglierà i colori di primo piano e di sfondo tra quelli 16 e 8 più vicini all'arancione sull'alzavola, che è giallo su nero.
Oltre alla risposta di @M. Becerra, non dimenticare di aggiungere questo export
all'interno ~/.bashrc
. Puoi farlo così:
nano ~/.bashrc
e digita ora il tuo export
:
export GREP_COLORS='ms=01;33:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Questo imposta i grep
risultati su giallo e non è necessario ripetere il export
terminale di riavvio o il computer.
<<<hello GREP_COLORS='ms=5;104' grep '.*'
una volta! È possibile trovare un elenco di codici, ad esempio qui (sezione 6).