Darmowy hosting online dla stacji roboczych

<Poprzedni | Spis treści | Następne>

Dodawanie koloru

Większość programów emulatora terminala reaguje na pewne niedrukowalne sekwencje znaków, aby kontrolować takie rzeczy jak atrybuty znaków (jak kolor, pogrubiony tekst i przerażający migający tekst) i pozycję kursora. Zajmiemy się pozycją kursora za chwilę, ale najpierw zajmiemy się kolorem.


Końcowe zamieszanie

W starożytności, gdy terminale były podłączone do zdalnych komputerów, istniało wiele konkurujących marek terminali i wszystkie działały inaczej. Miały różne klawiatury i wszystkie miały różne sposoby interpretowania informacji sterujących. Systemy Unix i podobne do Unix mają dwa dość złożone podsystemy do radzenia sobie z bałaganem sterowania terminalem (tzw. termcap oraz termino). Jeśli zajrzysz w najgłębsze zakamarki ustawień emulatora terminala, możesz znaleźć ustawienie dla typu emulacji terminala.

Aby terminale mogły mówić wspólnym językiem, Amerykański Narodowy Instytut Normalizacyjny (ANSI) opracował standardowy zestaw sekwencji znaków do sterowania terminalami wideo. Starzy użytkownicy DOS-a pamiętają AN-SI.SYS plik, który umożliwił interpretację tych kodów.


Kolor znaku jest kontrolowany poprzez wysłanie do emulatora terminala Kod wyjścia ANSI osadzony w strumieniu znaków do wyświetlenia. Kod sterujący nie jest „wydrukowywany” na wyświetlaczu, lecz jest interpretowany przez terminal jako instrukcja. Jak widzieliśmy w tabeli powyżej, \[ oraz \] sekwencje służą do enkapsulacji znaków niedrukowalnych. Kod ucieczki ANSI zaczyna się od ósemkowej liczby 033 (kod generowany przez klawisz ucieczki), po którym następuje opcjonalny atrybut znaku, a następnie instrukcja. Na przykład kod ustawiający kolor tekstu na normalny (atrybut = 0), czarny tekst to:

\033[0;30m

Oto tabela dostępnych kolorów tekstu. Zauważ, że kolory są podzielone na dwie grupy, rozróżniane przez zastosowanie atrybutu pogrubienia (1), który tworzy wygląd „jasnych” kolorów:


Tabela 13-2: Sekwencje wyjścia używane do ustawiania kolorów tekstu


Sekwencja

Kolor tekstu

Sekwencja

Kolor tekstu

\033[0;30m

Czarny

\033[1;30m

Ciemny szary

\033[0;31m

Czerwony

\033[1;31m

Światło czerwone

\033[0;32m

Zielony

\033[1;32m

Green Light

\033[0;33m

Ryż Basmati Brązowy

\033[1;33m

Żółty

\033[0;34m

Niebieski

\033[1;34m

Jasnoniebieski

\033[0;35m

Fioletowy

\033[1;35m

Jasny fiolet

Dodawanie koloru


\033[0;36m

Cyan

\033[1;36m

Jasnobłękitny

\033[0;37m

Jasnoszary

\033[1;37m

Biały


Spróbujmy zrobić czerwony monit. Wstawimy kod ucieczki na początku:



$ PS1="\[\033[0;31m\]<\u@\h \W>\$ "

$

$ PS1="\[\033[0;31m\]<\u@\h \W>\$ "

$


To działa, ale zauważ, że cały tekst, który wpisujemy po monicie, jest również czerwony. Aby to naprawić, dodamy kolejny kod ucieczki na końcu monitu, który nakaże emulatorowi terminala powrót do poprzedniego koloru:



$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "

$

$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "

$


Tak jest lepiej!

Można również ustawić kolor tła tekstu za pomocą kodów wymienionych poniżej. Kolory tła nie obsługują atrybutu pogrubienia.


Tabela 13-3: Sekwencje wyjścia używane do ustawienia koloru tła


Sekwencja

Kolor tła

Sekwencja

Kolor tła

\033[0;40m

Czarny

\033[0;44m

Niebieski

\033[0;41m

Czerwony

\033[0;45m

Fioletowy

\033[0;42m

Zielony

\033[0;46m

Cyan

\033[0;43m

Ryż Basmati Brązowy

\033[0;47m

Jasnoszary


Możemy utworzyć monit z czerwonym tłem, stosując prostą zmianę w pierwszym kodzie wyjścia:



$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "

<me@linuxbox ~>$

$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "

<me@linuxbox ~>$


Wypróbuj kody kolorów i zobacz, co możesz stworzyć!


Uwaga: Oprócz normalnych (0) i pogrubionych (1) atrybutów znaków, tekstowi można również nadać atrybuty podkreślenia (4), migania (5) i odwrócenia (7). W interesie dobrego smaku wiele emulatorów terminali odmawia jednak honorowania atrybutu migania.



Najlepsze przetwarzanie w chmurze dla systemu operacyjnego w OnWorks: