Kiedy coś grepuję, wynik jest zawsze czerwony. Wiem, że polecenie grep --color
drukuje wynik w kolorze, który domyślnie jest czerwony. Czy mogę zmienić kolor?
Kiedy coś grepuję, wynik jest zawsze czerwony. Wiem, że polecenie grep --color
drukuje wynik w kolorze, który domyślnie jest czerwony. Czy mogę zmienić kolor?
Odpowiedzi:
Możesz zmienić kolor podświetlenia grep
za pomocą zmiennej środowiskowej GREP_COLORS
, którą możesz ustawić w następujący sposób:
export GREP_COLORS='ms=01;31'
Liczby mogą stylizować tekst, zmieniać kolor pierwszego planu lub kolor tła lub zmieniać czcionki.
Warunki początkowe dla wszystkich GREP_COLORS
opcji 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
.
ᴀ;ʙ;…
- ;
oddziela opcje numerycznych, które chcesz połączyć (na przykład pogrubienie żółty na czarny łączy tekstowych opcje 1
, 33
i 40
do 1;33;40
)+ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ włącza się, gdy używasz tej opcji numerycznej-ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ wyłącza się, gdy używasz tej opcji numerycznejcolor
, green
, cyan
, I grey
- w sekcji „stylizacji tekstu”, odnoszą się do koloru planiecolors
- w sekcji „Styl tekstowy” odnosi się to zarówno do koloru pierwszego planu, jak i koloru tłathis color
- w sekcji „Kolory pierwszego planu” odnosi się do koloru pierwszego planu; w sekcji „Kolory tła” odnosi się do koloru tłaPusty ciąg znaków lub 0
resetuje 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» │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
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!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
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 terminal48;5;ɴ
- zamień ɴ na wartość określonego koloru z powyższej tabeli, aby zmienić kolor tła na najbliższy kolor obsługiwany przez terminalNa przykład 38;5;214;48;5;30
ustawi kolor pierwszego planu na kolor, 214
a 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.
10
jest domyślną czcionką. 11
through 20
to potencjalne czcionki alternatywne ( 20
zwykle oznacza czcionkę 𝕱𝖗𝖆𝖐𝖙𝖚𝖗 w rzadkich terminalach, które ją obsługują). Jedynie 10
i 12
wydaje się, że istnieje domyślnie w TTY bez GUI, i żaden nie istnieje w GNOME Terminal lub xterm
.
grep
nie przełącza poprawnie czcionek z powrotem przed wyjściem, więc uruchom, reset
jeśli utkniesz w niechcianej czcionce po grep
powrocie 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 GNOMExterm
i TTY w trybie innym niż GUI na Ubuntu 16.04
Wartość domyślna GREP_COLORS
to'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Znaczenie każdego zaakceptowanego elementu GREP_COLORS
można sprawdzić na stronie podręcznika GNU.org .
Aby zakończyć, jak wskazał @damadam, musisz dodać export
do swojego .bashrc
, aby zapisać zmiany.
Związane z:
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;30
powinien 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.
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 grep
to ustawienie żółtych wyników i nie muszę powtarzać export
terminala po ponownym uruchomieniu ani komputera.
<<<hello GREP_COLORS='ms=5;104' grep '.*'
raz! Listę kodów można znaleźć np. Tutaj (sekcja 6).