Na większości terminali można pokolorować wyjście za pomocą \033
sekwencji ucieczki ANSI.
Szukam listy wszystkich obsługiwanych kolorów i opcji (takich jak jasne i migające).
Ponieważ prawdopodobnie istnieją różnice między terminalami, które je obsługują, interesują mnie głównie sekwencje obsługiwane przez terminale kompatybilne z xterm.
colors
terminal
ansi-escape
ThiefMaster
źródło
źródło
Odpowiedzi:
Sekwencje specjalne ANSI, których szukasz, to podzbiór Select Graphic Rendition. Wszystkie mają formę
gdzie
XXX
jest serią parametrów oddzielonych średnikami.Można powiedzieć, aby tekst był czerwony, pogrubiony i podkreślony (omówimy wiele innych opcji poniżej) w języku C, który możesz napisać:
W C ++ byś użył
W Python3 używałbyś
a w Bashu używałbyś
gdzie pierwsza część powoduje, że tekst jest czerwony (
31
), pogrubiony (1
), podkreślony (4
), a ostatnia usuwa wszystko (0
).Jak opisano w poniższej tabeli, istnieje wiele właściwości tekstu, które można ustawić, takich jak pogrubienie, czcionka, podkreślenie i c. (Czy to nie głupie, że StackOverflow nie pozwala ci na wstawianie odpowiednich tabel w odpowiedziach?)
Efekty czcionek
2-bitowe kolory
Już to masz!
4-bitowe kolory
Standardy implementujące kolory terminali rozpoczęły się od ograniczonych (4-bitowych) opcji. Poniższa tabela zawiera wartości RGB kolorów tła i pierwszego planu używanych do nich przez różne emulatory terminali:
Korzystając z powyższego, możesz zrobić czerwony tekst na zielonym tle (ale dlaczego?), Używając:
11 kolorów (interludium)
W swojej książce „Podstawowe warunki kolorystyczne: ich uniwersalność i ewolucja” Brent Berlin i Paul Kay wykorzystali dane zebrane z dwudziestu różnych języków z różnych rodzin językowych, aby zidentyfikować jedenaście możliwych podstawowych kategorii kolorów: biały, czarny, czerwony, zielony, żółty, niebieski, brązowy, fioletowy, różowy, pomarańczowy i szary.
Berlin i Kay odkryli, że w językach, w których jest mniej niż jedenaście maksymalnie 11 kategorii kolorów, kolory mają określony wzór ewolucyjny. Ten wzór jest następujący:
Być może dlatego historia Beowulf zawiera tylko kolory czarny, biały i czerwony. Być może dlatego Biblia nie ma koloru niebieskiego. Homera Odyseja zawiera prawie 200 razy czarny i biały około 100 razy. Czerwony pojawia się 15 razy, a żółty i zielony pojawiają się tylko 10 razy. ( Więcej informacji tutaj )
Interesujące są również różnice między językami: zwróć uwagę na obfitość wyrazów w różnych kolorach używanych przez angielski lub chiński. Jednak zagłębianie się w te języki pokazuje, że każdy używa kolorów na różne sposoby. ( Więcej informacji )
Ogólnie rzecz biorąc, nazywanie, używanie i grupowanie kolorów w ludzkich językach jest fascynujące. Wróćmy do programu.
8-bitowe (256) kolory
Zaawansowana technologia i dostępne są tabele 256 wstępnie wybranych kolorów, jak pokazano poniżej.
Korzystając z powyższych, możesz zrobić różowy tekst w taki sposób:
I zrób niebieskie tło wcześnie rano
I oczywiście możesz połączyć te:
8-bitowe kolory są ułożone w następujący sposób:
WSZYSTKIE KOLORY
Teraz żyjemy w przyszłości, a pełne spektrum RGB jest dostępne za pomocą:
Możesz więc umieścić różowawy tekst na brązowawym tle za pomocą
Wsparcie dla terminali „true color” jest wymieniony tutaj .
Wiele z powyższych pochodzi ze strony Wikipedii „ Kod ucieczki ANSI ”.
Poręczny skrypt do przypomnienia sobie
Ponieważ często próbuję zapamiętać, jakie są kolory, mam przydatny skrypt o nazwie
~/bin/ansi_colours
:To drukuje
źródło
echo -e "\033[38;05;34;1mHi"
iecho -e "\033[38;05;34m\033[1mHi"
pracował dla mnie, chociaż anti-aliasing efekty czcionki nie powodują pojawienie się koloru, aby nieco zmienić pod pogrubienie w terminalu I testował to dalej.\033[
Kody SGR ( ) rozpoczynające się od 38 i 48 powinny być oddzielone z innym zastrzeżonym:
jako pod-separatorem, chociaż nie jest to całkowicie jasne z głównych źródeł na stronie: ecma-international.org/publications/files/ECMA-ST/Ecma -048.pdf i itu.int/rec/… . Również niektóre interpretacje zapominają o identyfikatorze przestrzeni kolorów w formularzach2
(16M-kolor RGB) /3
(16M-kolor CMY) /4
(??? CMYK) - np. Powinno być\033[38:2::255:255:255m
na białym planie 16M, a nie\033[38:2:255:255:255m
!Co powiesz na:
ECMA-48 - Funkcje kontrolne dla zestawów znaków kodowanych, wydanie 5 (czerwiec 1991 r.) - Standard definiujący kody kontroli kolorów, który najwyraźniej jest obsługiwany również przez xterm.
SGR 38 i 48 były pierwotnie zastrzeżone przez ECMA-48, ale zostały opracowane kilka lat później we wspólnej normie ITU, IEC i ISO, która składa się z kilku części i która (wśród wielu innych rzeczy) dokumentuje SGR Sekwencje kontrolne 38/48 dla koloru bezpośredniego i koloru indeksowanego :
W tej tabeli na stronie Wikipedii znajduje się kolumna dotycząca xtermu dla kodów ucieczki ANSI
źródło
Istnieje kilka ciekawszych wraz z powiązanymi informacjami.
źródło
Jest to absolutnie związane z twoim terminalem. VTE nie obsługuje migać Jeśli używasz
gnome-terminal
,tilda
,guake
,terminator
,xfce4-terminal
i tak dalej, zgodnie z VTE, będziesz nie ma migać.Jeśli używasz lub chcesz użyć migania na VTE, musisz użyć
xterm
.Możesz użyć polecenia infocmp z nazwą terminala:
Na przykład :
źródło
Dla tych, którzy nie uzyskać odpowiednie wyniki innych niż wymienionych języków, jeśli używasz C #, aby wydrukować tekst na konsoli okno (terminal) należy zastąpić „\ 033” z „\ x1B ”. W języku Visual Basic byłby to Chrw (27) .
źródło