Mogę zmienić kolor za pomocą preferencji, ale jak mogę zmienić kolor tła i kolor tekstu terminala za pomocą wiersza poleceń?
command-line
color-management
TechJhola
źródło
źródło
dconf
. Odpowiedziałem wcześniej na podobne pytanie: askubuntu.com/a/628129/295286\033[00;34mFOO\033[00m
Odpowiedzi:
Na niektórych terminalach kompatybilnych z XTerm / ANSI (jak
xterm
ignome-terminal
) można ustawić kolory przy użyciu palety większej niż domyślna paleta 8/16 kolorów (na przykład przy użyciu palety 88 kolorów, 256 kolorów lub 16777216 kolorów (RGB) , zarównoxterm
ignome-terminal
obsługiwać zarówno 256 kolory i kolory-16777216 (RGB) palety); pamiętaj, że powłoka może to zmienić (tak jest np. w przypadkuzsh
).Oto skrypt wyświetlający listę kolorów w palecie 256 kolorów wraz z ich kodem kolorów ANSI w terminalach kompatybilnych z XTerm / ANSI z obsługą palety 256 kolorów:
W zależności od tego, czy chcesz zastosować kolor na pierwszym planie, czy na tle, użyj
<fg_bg>
wartości38
lub48
(odpowiednio) w następującym poleceniu:Na przykład, aby ustawić kolor pierwszego planu (
<fg_bg>
=38
) na czerwony (<ANSI_color_code>
=196
), a kolor tła (<fg_bg>
=48
) na czarny (<ANSI_color_code>
=0
):Konieczne jest przerysowanie znaku zachęty
printf '\e[K'
, aby kolor tła został zastosowany do całej linii, a kolor pierwszego planu - do kursora:To samo można osiągnąć za pomocą wartości RGB zamiast kodów kolorów ANSI w kompatybilnym terminalu; w zależności od tego, czy chcesz zastosować kolor na pierwszym planie, czy na tle, użyj
<fg_bg>
wartości38
lub48
(odpowiednio) w następującym poleceniu:Na przykład, aby ustawić kolor pierwszego planu (
<fg_bg>
=38
) na czerwony (<R>
=255
,<G>
=0
,<B>
=0
), a kolor tła (<fg_bg>
=48
) na czarny (<R>
=0
,<G>
=0
,<B>
=0
):Ponownie konieczne jest przerysowanie znaku zachęty
printf '\e[K'
, aby kolor tła został zastosowany do całej linii, a kolor pierwszego planu - do kursora:Za pomocą jednej z metod można użyć
printf '\e[0m'
do zresetowania wszystkich atrybutów:źródło
xterm
ignome-terminal
rozpoznaje \ e [38/48, 2, R, G; Bm prawdziwe kolorów sekwencji sterujących; jednakxterm
zaokrągla rzeczywisty kolor do najbliższej w 256-paletowej palecie kolorów.gnome-terminal
wyświetla dokładny prawdziwy kolor podany w sekwencji ucieczki.xterm
), jeśli kursor znajduje się na bardzo prawej krawędzi (wizualnie wyświetlany w kolumnie po prawej stronie, ale logicznie już poza tym, ponieważ znak był już wydrukowany w kolumnie po prawej stronie), ostatnia litera jest usuwana. Zobacz np. Bugzilla.gnome.org/show_bug.cgi?id=740789 lub savannah.gnu.org/bugs/?36831 .Informacje znalezione na tej stronie , z wyjątkiem kolumny podglądu:
Sekwencje składają się ze znaku Escape (często reprezentowanego przez „
^[
” lub „<Esc>
”), a następnie kilku innych znaków: „^[FCm
” (gdzieFC
jest jedną z liczb na poniższej liście punktowanej).W
bash
The Esckod może być jedną z następujących czynności:\e
\033
(ósemkowy)\x1B
(szesnastkowy)Uwaga 1: Sekwencja „
\e[0m
” usuwa wszystkie atrybuty (formatowanie i kolory). Dobrym pomysłem może być dodanie go na końcu każdego kolorowego tekstu.Uwaga 2: Kolory pierwszego planu i tła mogą się różnić w zależności od konfiguracji terminala i nie wszystkie kolory są obsługiwane .
Ustaw / Resetuj
0
: Resetuj / usuń wszystkie atrybuty modyfikatora, pierwszego planu i tła:echo -e "\e[0mNormal Text"
1
: Pogrubienie / Jasność:echo -e "Normal \e[1mBold"
2
: Dim:echo -e "Normal \e[2mDim"
4
: Podkreślono:echo -e "Normal \e[4mUnderlined"
5
: Miga (nie działa w większości terminali oprócz XTerm):echo -e "Normal \e[5mBlink"
7
: Odwróć / Odwróć:echo -e "Normal \e[7minverted"
8
: Ukryty (przydatny do poufnych informacji):echo -e "Normal \e[8mHidden Input"
21
: Resetuj / Usuń pogrubienie / jasne:echo -e "Normal \e[1mBold \e[21mNormal"
22
: Resetuj / Usuń dim:echo -e "Normal \e[2mDim \e[22mNormal"
24
: Resetuj / Usuń podkreślenie:echo -e "Normal \e[4mUnderlined \e[24mNormal"
25
: Resetuj / Usuń miganie:echo -e "Normal \e[5mBlink \e[25mNormal"
27
: Resetuj / Usuń bieg wsteczny / odwrócony:echo -e "Normal \e[7minverted \e[27mNormal"
28
: Resetuj / Usuń ukryty:echo -e "Normal \e[8mHidden \e[28mNormal"
Pierwszoplanowy
39
: Domyślnie (zwykle zielony, biały lub jasnoszary):echo -e "Default \e[39mDefault"
30
Czarny:echo -e "Default \e[30mBlack"
(najlepiej w połączeniu z kolorem tła:echo -e "Default \e[30;107mBlack on white"
)31
: Czerwony (nie używaj z zielonym tłem)32
: Zielony33
: Żółty34
: Niebieski35
: Magenta / Purple36
: Cyan37
: Jasny szary90
: Ciemny szary91
: Jasnoczerwony92
: Jasnozielony93
: Jasny zółty94
: Jasny niebieski95
: Jasny magenta / różowy96
: Jasnobłękitny97
: Białytło
49
: Domyślny kolor tła (zwykle czarny lub niebieski)40
: Czarny41
: Czerwony42
: Zielony43
: Żółty44
: Niebieski45
: Magenta / Purple46
: Cyan47
: Jasnoszary (nie używaj z białym pierwszym planem)100
: Ciemnoszary (nie używaj z czarnym pierwszym planem)101
: Jasnoczerwony102
: Jasnozielony (nie używaj z białym pierwszym planem)103
: Jasnożółty (nie używaj z białym pierwszym planem)104
: Jasnoniebieski (nie używaj z jasnożółtym pierwszym planem)105
: Jasny magenta / różowy (nie używaj z jasnym pierwszym planem)106
: Jasnobłękitny (nie używaj z białym pierwszym planem)107
: Biały (nie używać z jasnym pierwszym planem)Aby ustawić jednocześnie kolory pierwszego planu i tła, użyj formularza
echo -e "\e[S;FG;BGm"
. Na przykład:echo -e "\e[1;97;41m"
(pogrubiony biały pierwszy plan na czerwonym tle)256 opcji kolorów można znaleźć na stronie źródłowej.
źródło
Zmień kolory przypadkowo
Jeśli ma to na celu przypadkową zmianę kolorów :
Możesz użyć polecenia setterm :
spośród kolorów, które możesz wybrać (zarówno na przednim, jak i na tle):
więcej opcji:
Zmień ustawienia profilu (koloru)
W 14.04 nie znalazłem opcji
dconf
ustawiania kolorów ani terminala. Możesz jednak użyćgconftool
Najpierw musisz uzyskać nazwę swojego profilu:
Następnie, aby ustawić kolory tekstu swojego profilu:
na przykład, aby ustawić kolor tekstu na biały
To samo z kolorem tła:
na przykład, aby ustawić kolor tła na czarny
Alternatywnie, aby ustawić nazwę koloru (kolorów), możesz po prostu użyć
white
lubgreen
z tej samej palety co polecenie setterm, np .:źródło
dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'"
udało się.gconftool-2
(dla Ubuntu 14.04 i być może kilku kolejnych wydań)dconf
lubgsettings
w nowszych wersjach Ubuntu zmień ustawienia gnome-terminal i od razu zacznij działać na wszystkich kartach i oknach tego samego profilu. Nie sądzę, żeby OP szukał takiego zachowania.Różne kody kolorów użyte do uzyskania kolorowych wydruków mogą być również użyte do uzyskania kolorowego tła :
Dlatego następujące polecenie zmienia kolor tła na czerwony:
W zależności od powłoki, emulatora terminala itp. Może nie być potrzebny
-e
.źródło
Zobacz odpowiedź kos dotyczącą przełączania pierwszego planu lub tła na określony kolor palety, a nawet bezpośredni kolor RGB w niektórych terminalach. Efekt takiej sekwencji trwa, dopóki nie zostanie wybrany inny kolor (lub nie zostanie przywrócony domyślny).
Innym podejściem obsługiwanym przez niektóre emulatory terminali jest ponowne zdefiniowanie dokładnych wartości RGB domyślnych kolorów pierwszego planu i tła terminala przy użyciu sekwencji specjalnych OSC 10/11:
Prawdopodobnie potrwa to znacznie dłużej (dopóki nie zostanie zastąpione przez inny OSC 10/11 lub zresetowany przez OSC 110/111), ale w przeciwieństwie do podejścia dconf, nadal wpływa to tylko na aktualny terminal.
źródło