Kody escape ANSI
Kod escape ANSI to krótka sekwencja znaków, którą program wypisuje, aby powiedzieć terminalowi aby zrobił coś innego niż wyświetlić te znaki — zabarwić następne słowa na czerwono, przesunąć kursor o dwa wiersze w górę, wyczyścić ekran. Terminal połyka sekwencję i na nią reaguje; dlatego plik dziennika pełny takich kodów wygląda jak szum w edytorze.
Każdy kod poniżej zaczyna się bajtem escape i — z jednym wyjątkiem — nawiasem otwierającym. Kolumna parametru podaje część między nawiasem a ostatnią literą, czyli to co montuje się w kodzie; pierwsza kolumna pokazuje całą sekwencję tak jak byś ją napisał w powłoce.
Obsługa różni się między terminalami, a ta strona wskazuje gdzie to ma znaczenie. Osiem podstawowych kolorów i pogrubienie działają wszędzie; migotanie, podwójne podkreślenie i true color nie.
Anatomia sekwencji
6Każdy kod na tej stronie ma ten sam kształt: bajt escape, nawias otwierający, parametry i jedna litera mówiąca co z nimi zrobić.
| Sekwencja | Parameter | Efekt |
|---|---|---|
| \e | 0x1B | Bajt escape rozpoczynający każdą sekwencjęW powłoce pisze się \e, w C \033, w większości języków \x1b i w JSON i Javie \u001b. |
| \e[ | CSI | Control Sequence Introducer — otwiera sparametryzowany rozkaz |
| \e[<n>m | m | Select Graphic Rendition: wszystko wokół koloru i stylu kończy się na m |
| \e[1;4;31m | 1;4;31 | Kilka parametrów naraz, oddzielonych średnikamiPogrubienie, podkreślenie i czerwień w jednej sekwencji — krótsze niż trzy osobne i taki sam efekt. |
| \e[0m | 0 | Resetuje wszystkie atrybuty do ustawień domyślnych terminalaWypisz to na końcu kolorowego wyjścia. Program kończący się bez tego zostawia użytkownikowi zabarwiony prompt. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | Klikalny hiperlink w terminalach które go obsługująTo jest sekwencja OSC, nie CSI, i kończy się ESC \ zamiast litery. |
Atrybuty tekstu
14Obsługa jest nierówna poza pierwszymi pięcioma. Migotanie jest prawie wszędzie ignorowane, kilka terminali renderuje przyciemnienie i kursywę identycznie.
| Sekwencja | Parameter | Efekt |
|---|---|---|
| \e[1m | 1 | Pogrubienie albo jasne |
| \e[2m | 2 | Przyciemnienie |
| \e[3m | 3 | Kursywa |
| \e[4m | 4 | Podkreślenie |
| \e[5m | 5 | MigotanieSzeroko ignorowane; większość nowoczesnych terminali renderuje to jako zwykły tekst. |
| \e[7m | 7 | Odwrócenie: zamienia pierwszy plan i tło |
| \e[8m | 8 | Ukryty: tekst istnieje ale się nie renderuje |
| \e[9m | 9 | Przekreślenie |
| \e[21m | 21 | Podwójne podkreślenieNiektóre terminale czytają 21 jako "wyłącz pogrubienie". |
| \e[22m | 22 | Normalna intensywność: anuluje pogrubienie i przyciemnienie |
| \e[23m | 23 | Anuluje kursywę |
| \e[24m | 24 | Anuluje podkreślenie |
| \e[27m | 27 | Anuluje odwrócenie |
| \e[29m | 29 | Anuluje przekreślenie |
Kolor tekstu
17Osiem standardowych kolorów i ich jasne odpowiedniki. To co czytelnik faktycznie widzi to interpretacja ich motywu terminala — "czerwień" to pozycja w palecie, nie wartość heksadecymalna.
| Sekwencja | Parameter | Efekt |
|---|---|---|
| \e[30m | 30 | Czarny tekst |
| \e[31m | 31 | Czerwony tekst |
| \e[32m | 32 | Zielony tekst |
| \e[33m | 33 | Żółty tekst |
| \e[34m | 34 | Niebieski tekst |
| \e[35m | 35 | Purpurowy tekst |
| \e[36m | 36 | Cyjanowy tekst |
| \e[37m | 37 | Biały tekst |
| \e[39m | 39 | Powrót do domyślnego koloru tekstu |
| \e[90m | 90 | Jasny czarny tekst |
| \e[91m | 91 | Jasny czerwony tekst |
| \e[92m | 92 | Jasny zielony tekst |
| \e[93m | 93 | Jasny żółty tekst |
| \e[94m | 94 | Jasny niebieski tekst |
| \e[95m | 95 | Jasny purpurowy tekst |
| \e[96m | 96 | Jasny cyjanowy tekst |
| \e[97m | 97 | Jasny biały tekst |
Kolor tła
17Ta sama paleta przesunięta o dziesięć. Kod tła ustawia komórkę za tekstem i obowiązuje dopóki nie zostanie wyresetowany.
| Sekwencja | Parameter | Efekt |
|---|---|---|
| \e[40m | 40 | Czarne tło |
| \e[41m | 41 | Czerwone tło |
| \e[42m | 42 | Zielone tło |
| \e[43m | 43 | Żółte tło |
| \e[44m | 44 | Niebieskie tło |
| \e[45m | 45 | Purpurowe tło |
| \e[46m | 46 | Cyjanowe tło |
| \e[47m | 47 | Białe tło |
| \e[49m | 49 | Powrót do domyślnego tła |
| \e[100m | 100 | Jasne czarne tło |
| \e[101m | 101 | Jasne czerwone tło |
| \e[102m | 102 | Jasne zielone tło |
| \e[103m | 103 | Jasne żółte tło |
| \e[104m | 104 | Jasne niebieskie tło |
| \e[105m | 105 | Jasne purpurowe tło |
| \e[106m | 106 | Jasne cyjanowe tło |
| \e[107m | 107 | Jasne białe tło |
256 kolorów i true color
4Dwa rozszerzenia tego samego mechanizmu SGR. Obydwa są szeroko obsługiwane ale nie wszędzie; terminal który ich nie rozumie zwykle ignoruje sekwencję zamiast ją wypisywać.
| Sekwencja | Parameter | Efekt |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Tekst w kolorze palety n, 0–2550–15 to szesnaście wyżej, 16–231 to kostka kolorów 6×6×6, 232–255 to gradacja szarości. |
| \e[48;5;<n>m | 48;5;n | Tło w kolorze palety n, 0–255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Tekst w dokładnym 24-bitowym kolorze |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Tło w dokładnym 24-bitowym kolorze |
Ruch kursora
11Ruchy nie przewijają i nie zawijają: kursor już na górze ekranu ignoruje polecenie pójścia wyżej.
| Sekwencja | Parameter | Efekt |
|---|---|---|
| \e[<n>A | A | O n wierszy w górę |
| \e[<n>B | B | O n wierszy w dół |
| \e[<n>C | C | O n kolumn w prawo |
| \e[<n>D | D | O n kolumn w lewo |
| \e[<n>E | E | O n wierszy w dół, na początek wiersza |
| \e[<n>F | F | O n wierszy w górę, na początek wiersza |
| \e[<n>G | G | Do kolumny n w bieżącym wierszu |
| \e[<row>;<col>H | H | Do bezwzględnego wiersza i kolumny, licząc od 1 |
| \e[s | s | Zapamiętaj pozycję kursora |
| \e[u | u | Wróć do zapamiętanej pozycji |
| \e[6n | 6n | Zapytaj terminal gdzie jest kursorTerminal odpowiada na standardowe wejście jako \e[<wiersz>;<kolumna>R — jedyna sekwencja tu która zwraca odpowiedź. |
Czyszczenie
7Czyszczenie zapisuje spacje z bieżącym kolorem tła; nie przesuwa kursora.
| Sekwencja | Parameter | Efekt |
|---|---|---|
| \e[0J | 0J | Wyczyść od kursora do końca ekranu |
| \e[1J | 1J | Wyczyść od początku ekranu do kursora |
| \e[2J | 2J | Wyczyść cały ekranKursor pozostaje gdzie był — dlatego zwykle kombinuje się z \e[H. |
| \e[3J | 3J | Wyczyść też bufor historii przewijania |
| \e[0K | 0K | Wyczyść od kursora do końca wiersza |
| \e[1K | 1K | Wyczyść od początku wiersza do kursora |
| \e[2K | 2K | Wyczyść cały wiersz\r\e[2K to zwykły sposób aby przerysować wiersz postępu na miejscu. |
Tryby terminala
8Tryby prywatne, oznaczone znakiem zapytania. Zmieniają jak terminal się zachowuje a nie jak wygląda jeden kawałek tekstu, i każdy z nich trzeba wyłączyć przed zakończeniem programu.
| Sekwencja | Parameter | Efekt |
|---|---|---|
| \e[?25l | ?25l | Ukryj kursor |
| \e[?25h | ?25h | Pokaż kursor |
| \e[?1049h | ?1049h | Przełącz na alternatywny ekranTo co używają programy pełnoekranowe żeby historia powłoki poniżej przetrwała. |
| \e[?1049l | ?1049l | Przełącz z powrotem na główny ekran |
| \e[?7h | ?7h | Zawijaj długie wiersze na prawej krawędzi |
| \e[?7l | ?7l | Pozwól długim wierszom wychodzić za prawy okraj |
| \e[?2004h | ?2004h | Włącz bracketed pasteWklejony tekst przychodzi owinięty w \e[200~ i \e[201~, więc powłoka rozróżnia pisanie od wklejania. |
| \e[?2004l | ?2004l | Wyłącz bracketed paste |