Modyfikowanie koloru grep


23

Kiedy coś grepuję, wynik jest zawsze czerwony. Wiem, że polecenie grep --colordrukuje wynik w kolorze, który domyślnie jest czerwony. Czy mogę zmienić kolor?

Odpowiedzi:


18

Możesz zmienić kolor podświetlenia grepza pomocą zmiennej środowiskowej GREP_COLORS, którą możesz ustawić w następujący sposób:

export GREP_COLORS='ms=01;31'

Opcje numeryczne

Liczby mogą stylizować tekst, zmieniać kolor pierwszego planu lub kolor tła lub zmieniać czcionki.

Warunki początkowe dla wszystkich GREP_COLORSopcji to domyślny styl, czcionka i kolory terminala. Zresetowanie któregokolwiek z nich spowoduje przywrócenie ustawień domyślnych terminala, a nie ustawień domyślnych terminala grep.

Legenda

  • ;ʙ;- ;oddziela opcje numerycznych, które chcesz połączyć (na przykład pogrubienie żółty na czarny łączy tekstowych opcje 1, 33i 40do 1;33;40)
  • +ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ włącza się, gdy używasz tej opcji numerycznej
  • -ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ wyłącza się, gdy używasz tej opcji numerycznej
  • color, green, cyan, I grey- w sekcji „stylizacji tekstu”, odnoszą się do koloru planie
  • colors - w sekcji „Styl tekstowy” odnosi się to zarówno do koloru pierwszego planu, jak i koloru tła
  • this color- w sekcji „Kolory pierwszego planu” odnosi się do koloru pierwszego planu; w sekcji „Kolory tła” odnosi się do koloru tła

Styl tekstu

Pusty ciąg znaków lub 0resetuje wszystkie style tekstu i resetuje oba kolory do wartości domyślnych, ale nie resetuje czcionki do wartości domyślnych.

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

Kolory pierwszego planu

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

Kolory tła

Pamiętaj, że TTY bez GUI nie zapewnia jaśniejszej serii kolorów tła.

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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-kolorowy wykres

256-kolorowy wykres

Powyższy wykres to zrzut ekranu treści opublikowanej w „Kodzie ucieczkowym ANSI, kolory 8-bitowe” na Wikipedii , autor : CMG Lee i in. w dniu 24 lutego 2016 r. i później oraz na licencji autorów na podstawie zarówno licencji CC CC-SA-SA 3.0, jak i licencji GFDL .

Kolory z powyższej tabeli 256 kolorów można użyć w następujący sposób:

  • 38;5;ɴ- zamień ɴ na wartość określonego koloru z powyższej tabeli, aby zmienić kolor pierwszego planu na najbliższy kolor obsługiwany przez terminal
  • 48;5;ɴ- zamień ɴ na wartość określonego koloru z powyższej tabeli, aby zmienić kolor tła na najbliższy kolor obsługiwany przez terminal

Na przykład 38;5;214;48;5;30ustawi kolor pierwszego planu na kolor, 214a tło na kolor 30, dając pomarańczowo-turkusowy wynik na terminalach, które go obsługują.

Pamiętaj, że nie wszystkie terminale obsługują wszystkie 256 kolorów, dlatego należy pamiętać, że wybrany kolor może nie zostać użyty. Zostanie użyty tylko obsługiwany kolor najbliższy wybranemu.

Na przykład TTY bez GUI obsługuje tylko podstawowe 16 kolorów dla pierwszego planu i podstawowe 8 kolorów dla tła, więc najbliższe kolory, które zostaną użyte, mogą nie być zgodne z oczekiwaniami. Na przykład zaznaczenie pomarańczowo-tealowe powyżej ( 38;5;214;48;5;30) pokazuje się jako żółto-czarne w TTY bez GUI, ponieważ są to najbliższe obsługiwane kolory.

Czcionki

10jest domyślną czcionką. 11through 20to potencjalne czcionki alternatywne ( 20zwykle oznacza czcionkę 𝕱𝖗𝖆𝖐𝖙𝖚𝖗 w rzadkich terminalach, które ją obsługują). Jedynie 10i 12wydaje się, że istnieje domyślnie w TTY bez GUI, i żaden nie istnieje w GNOME Terminal lub xterm.

grepnie przełącza poprawnie czcionek z powrotem przed wyjściem, więc uruchom, resetjeśli utkniesz w niechcianej czcionce po greppowrocie do powłoki.

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

Źródła sekcji „Opcje numeryczne”:
        „Kod ucieczkowy ANSI, parametry SGR (Select Graphic Rendition)” na Wikipedii
        ● Weryfikacja eksperymentalna na terminalu GNOME xtermi TTY w trybie innym niż GUI na Ubuntu 16.04


przykłady zmian kolorów po ustawieniu <code> GREP_COLORS </code>

Wartość domyślna GREP_COLORSto'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'

Znaczenie każdego zaakceptowanego elementu GREP_COLORSmożna sprawdzić na stronie podręcznika GNU.org .

Aby zakończyć, jak wskazał @damadam, musisz dodać exportdo swojego .bashrc, aby zapisać zmiany.

Związane z:

Wielokolorowy Grep

Używaj różnych kolorów dla każdego kolejnego grep


2
Dostępnych jest znacznie więcej kolorów i opcji formatowania, spróbuj <<<hello GREP_COLORS='ms=5;104' grep '.*'raz! Listę kodów można znaleźć np. Tutaj (sekcja 6).
deser

1
Jak korzystać z wartości kolorów z tabeli 256 kolorów w GREP_COLORS?
Sebastian Stark,

1
@SebastianStark Na pierwszym planie użyj 38;5;ɴ, gdzie ɴ należy zastąpić jedną z wartości kolorów. W tle używaj 48;5;ɴw ten sam sposób. Na przykład 38;5;214;48;5;30powinien dać ci pomarańczę na turkusowym. Jeśli nie, terminal może nie obsługiwać 256 kolorów. Na przykład TTY bez GUI obsługuje tylko 16 kolorów dla pierwszego planu i 8 dla tła i wybierze kolory pierwszego planu i tła spośród tych 16 i 8 najbliższych pomarańczowi na turkusowym kolorze, który jest żółty na czarnym tle.
Chai T. Rex

1
@ ChaiT.Rex thx, działa dobrze. Nie jest to jednak oczywiste z odpowiedzi.
Sebastian Stark

2
@ ChaiT.Rex dzięki, chociaż dla mnie problem polegał bardziej na tym, że w sekcji „256 kolorów” tekstu nie ma wzmianki o tych opcjach, tylko tabela kolorów
Sebastian Stark

6

Oprócz odpowiedzi z @M. Becerra, nie zapomnij dodać tego do exportśrodka ~/.bashrc. Możesz to zrobić w ten sposób:

nano ~/.bashrc

i wpisz teraz swoje export:

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

Powoduje grepto ustawienie żółtych wyników i nie muszę powtarzać exportterminala po ponownym uruchomieniu ani komputera.


5
edytuj oryginalną odpowiedź, aby następnym razem była lepsza.
Thorbjørn Ravn Andersen

To jest przyjemniejsze, ALE wydaje się, że działa tylko na Linuksie, a nie na Macu :(
Sridhar Sarnobat,

@SridharSarnobat Mac naprawdę różni się od Ubuntu, Mac nie jest Linuksem, i robię ten krok dla Ubuntu (gdyby był dla Maca, byłoby to nie na temat, pytania na Maca należy zadawać na Ask Different
damadam

Tak. Nie warto jednak zadawać kolejnego pytania, aby pokazać mi smutek :)
Sridhar Sarnobat,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.