Ändern der Farbe von Grep

23

Wenn ich etwas greife, ist das Ergebnis immer rot. Ich weiß, dass der Befehl grep --colordas Ergebnis in Farbe ausgibt, die standardmäßig rot ist. Kann ich die Farbe ändern?

Codito ergo Summe
quelle

Antworten:

18

Sie können die Hervorhebungsfarbe ändern, grepindem Sie eine Umgebungsvariable verwenden GREP_COLORS, die Sie folgendermaßen festlegen können:

export GREP_COLORS='ms=01;31'

Numerische Optionen

Die Zahlen können Text formatieren, die Vordergrundfarbe oder die Hintergrundfarbe ändern oder Schriftarten ändern.

Die Startbedingungen für alle GREP_COLORSOptionen sind der Standardtextstil, die Standardschriftart und die Standardfarben des Terminals. Wenn Sie eine dieser Optionen zurücksetzen, werden die Standardeinstellungen des Terminals und nicht die Standardeinstellungen des Terminals grepwiederhergestellt.

Legende

  • ;ʙ;- ;trennt numerische Optionen , die Sie (zB fett , gelb auf schwarzem Text kombiniert Optionen kombinieren möchten 1, 33und 40in 1;33;40)
  • +ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ wird aktiviert, wenn Sie diese numerische Option verwenden
  • -ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ wird deaktiviert , wenn Sie diese numerische Option verwenden
  • color, green, cyan, Und grey- in der „Text - Styling“ Abschnitt, beziehen sich diese auf die Vordergrundfarbe
  • colors - Im Abschnitt "Textstil" bezieht sich dies sowohl auf die Vordergrundfarbe als auch auf die Hintergrundfarbe
  • this color- im Abschnitt "Vordergrundfarben" bezieht sich dies auf die Vordergrundfarbe; Im Abschnitt "Hintergrundfarben" bezieht sich dies auf die Hintergrundfarbe

Textgestaltung

Eine leere Zeichenfolge oder 0setzt den gesamten Textstil zurück und setzt beide Farben auf die Standardeinstellungen zurück , setzt jedoch die Schriftart nicht auf die Standardeinstellungen zurück.

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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»           │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘

Vordergrundfarben

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!)    │
└────────────┴────────────────────────────────────────────────────────────────────┘

Hintergrundfarben

Beachten Sie, dass das Nicht-GUI-TTY keine helleren Hintergrundfarbserien bietet.

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!)     │
└────────────┴────────────────────────────────────────────────────────────────────┘

256-Farben-Grafik

256-Farben-Grafik

Das obige Diagramm zeigt einen Screenshot des Inhalts, der in "ANSI-Escape-Code, 8-Bit-Farben" auf Wikipedia veröffentlicht wurde und von CMG Lee et al. am 24. Februar 2016 und später und von den Autoren unter der CC BY-SA 3.0-Urheberrechtslizenz und der GFDL-Urheberrechtslizenz lizenziert .

Farben aus der obigen 256-Farben-Tabelle können wie folgt verwendet werden:

  • 38;5;ɴ- Ersetzen Sie ɴ durch den Wert einer bestimmten Farbe in der obigen Tabelle, um die Vordergrundfarbe auf die Farbe zu ändern, die dem Terminal am nächsten kommt
  • 48;5;ɴ- Ersetzen Sie ɴ durch den Wert einer bestimmten Farbe in der obigen Tabelle, um die Hintergrundfarbe auf die Farbe zu ändern, die dem Terminal am nächsten kommt

Zum Beispiel 38;5;214;48;5;30wird der Vordergrund auf Farbe 214und der Hintergrund auf Farbe gesetzt 30, was auf Terminals, die dies unterstützen, zu einem Orange-on-Teal-Ergebnis führt.

Beachten Sie, dass nicht alle Terminals alle 256 Farben unterstützen. Beachten Sie daher, dass die ausgewählte Farbe möglicherweise nicht verwendet wird. Es wird nur die unterstützte Farbe verwendet, die der ausgewählten am nächsten kommt.

Beispielsweise unterstützt das Nicht-GUI-TTY nur die 16 Grundfarben für den Vordergrund und die 8 Grundfarben für den Hintergrund, sodass die nächsten verwendeten Farben möglicherweise nicht Ihren Erwartungen entsprechen. Als Beispiel wird die Orange-auf-Blaugrün-Auswahl oben ( 38;5;214;48;5;30) im Nicht-GUI-TTY als Gelb-auf-Schwarz angezeigt, da dies die am nächsten unterstützten Farben sind.

Schriften

10ist die Standardschriftart. 11durch 20sind potenzielle alternative Schriftarten ( 20bedeutet normalerweise eine 𝕱𝖗𝖆𝖐𝖙𝖚𝖗 Schrift in den seltenen Terminals, die dies unterstützen). Nur 10und 12scheinen standardmäßig in der Nicht-GUI-TTY zu existieren, und keine existieren in GNOME-Terminal oder xterm.

grepSchriftarten werden vor dem Beenden nicht ordnungsgemäß zurückgeschaltet. Führen resetSie den Befehl aus, wenn Sie nach der grepRückkehr zur Shell in einer unerwünschten Schriftart stecken bleiben .

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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       │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘

Quellen im Abschnitt "Numerische Optionen":
        "ANSI-Escape-Code, SGR-Parameter (Select Graphic Rendition)" in Wikipedia
        ● Experimentelle Überprüfung auf GNOME-Terminal xtermund TTY ohne GUI-Modus unter Ubuntu 16.04


Beispiele für Farbänderungen nach dem Festlegen von <code> GREP_COLORS </ code>

Der Standardwert von GREP_COLORSist'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'

Die Bedeutung jedes akzeptierten Elements GREP_COLORSkann auf der Handbuchseite von GNU.org überprüft werden .

Zum Abschluss und wie von @damadam hervorgehoben, müssen Sie das exportzu Ihrem hinzufügen .bashrc, um die Änderungen zu speichern.

Verbunden:

Mehrfarbiges Grep

Verwenden Sie für jedes Grep andere Farben

M. Becerra
quelle
2
Es gibt viel mehr Farben und Formatierungsoptionen, versuchen Sie es <<<hello GREP_COLORS='ms=5;104' grep '.*'einmal! Eine Liste der Codes finden Sie zB hier (Abschnitt 6).
Dessert
1
Wie verwendet man mit GREP_COLORS Farbwerte aus der 256-Farben-Tabelle?
Sebastian Stark
1
@SebastianStark Verwenden Sie für den Vordergrund, 38;5;ɴwobei ɴ durch einen der Farbwerte ersetzt werden soll. Verwenden Sie 48;5;ɴfür den Hintergrund die gleiche Methode. Zum Beispiel 38;5;214;48;5;30sollten Sie Orange auf Petrol geben. Andernfalls unterstützt Ihr Terminal möglicherweise keine 256 Farben. Beispielsweise unterstützt das Nicht-GUI-TTY nur 16 Farben für den Vordergrund und 8 für den Hintergrund und wählt die Vordergrund- und Hintergrundfarben aus den 16 und 8 aus, die Orange auf Türkis am nächsten kommen, Gelb auf Schwarz.
Chai T. Rex
1
@ ChaiT.Rex Danke, funktioniert gut. Es ist jedoch nicht sehr offensichtlich aus der Antwort.
Sebastian Stark
2
@ ChaiT.Rex danke, aber für mich war das Problem mehr, dass im Abschnitt "256 Farben" des Textes diese Optionen nicht erwähnt werden, nur die Farbtabelle
Sebastian Stark
6

Dazu die Antwort von @M. Becerra, vergessen Sie nicht , diese hinzufügen exportinnen ~/.bashrc. Du kannst es so machen:

nano ~/.bashrc

und tippe jetzt dein export:

export GREP_COLORS='ms=01;33:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'

Dies setzt die grepErgebnisse auf gelb und ich muss das exportTerminal oder den Computer nach dem Neustart nicht wiederholen .

Damadam
quelle
5
Bearbeiten Sie die ursprüngliche Antwort, um sie beim nächsten Mal zu verbessern.
Thorbjørn Ravn Andersen
Dies ist schöner, aber es scheint nur auf Linux zu funktionieren, nicht auf Mac :(
Sridhar Sarnobat
@SridharSarnobat Mac ist wirklich anders als Ubuntu, Mac ist nicht Linux, und ich mache diesen Schritt für Ubuntu (wenn es für Mac wäre, wäre es hier
unangebracht
Ja. Es lohnt sich nicht, eine weitere Frage zu stellen, nur um meine Trauer zu zeigen :)
Sridhar Sarnobat