ANSI escape kódy
ANSI escape kód je krátka postupnosť znakov, ktorú program vypíše, aby terminálu povedal, nech urobí niečo iné, než tie znaky zobrazí — zafarbí ďalšie slová načerveno, posunie kurzor o dva riadky hore, zmaže obrazovku. Terminál sekvenciu pohltí a vykoná ju; preto log plný týchto kódov vyzerá v editore ako šum.
Každý kód nižšie začína escape bajtom a — s jednou výnimkou — otváracou zátvorkou. Stĺpec s parametrom uvádza časť medzi zátvorkou a koncovým písmenom, teda to, čo skladáte v kóde; prvý stĺpec ukazuje celú sekvenciu tak, ako by ste ju napísali v shelli.
Podpora sa medzi terminálmi líši a táto stránka to tam, kde na tom záleží, uvádza. Osem základných farieb a tučné písmo fungujú všade; blikanie, dvojité podčiarknutie a true color nie.
Anatómia sekvencie
6Každý kód na tejto stránke má rovnaký tvar: escape bajt, otváracia zátvorka, parametre a jedno písmeno, ktoré hovorí, čo s nimi.
| Sekvencia | Parameter | Účinok |
|---|---|---|
| \e | 0x1B | Escape bajt, ktorým začína každá sekvenciaV shelli sa píše \e, v C \033, vo väčšine jazykov \x1b a v JSON a Jave \u001b. |
| \e[ | CSI | Control Sequence Introducer — otvára príkaz s parametrami |
| \e[<n>m | m | Select Graphic Rendition: všetko okolo farieb a štýlu končí písmenom m |
| \e[1;4;31m | 1;4;31 | Viac parametrov naraz, oddelených bodkočiarkamiTučné, podčiarknuté a červené v jednej sekvencii — kratšie než tri samostatné a s rovnakým účinkom. |
| \e[0m | 0 | Vráti všetky atribúty na predvolené nastavenie termináluVypíšte ho na konci farebného výstupu. Program, ktorý ho vynechá, nechá používateľovi zafarbený prompt. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | Klikateľný hypertextový odkaz v termináloch, ktoré ho podporujúIde o OSC, nie CSI sekvenciu, a ukončuje ju ESC \ namiesto písmena. |
Atribúty textu
14Podpora je nerovnomerná okrem prvých piatich. Blikanie takmer nikde nefunguje a niekoľko terminálov zobrazuje slabé a kurzívu rovnako.
| Sekvencia | Parameter | Účinok |
|---|---|---|
| \e[1m | 1 | Tučné alebo jasné |
| \e[2m | 2 | Slabé |
| \e[3m | 3 | Kurzíva |
| \e[4m | 4 | Podčiarknutie |
| \e[5m | 5 | BlikanieVäčšinou sa ignoruje; moderné terminály ho zobrazia ako obyčajný text. |
| \e[7m | 7 | Inverzia: vymení popredie a pozadie |
| \e[8m | 8 | Skryté: text existuje, ale nevykreslí sa |
| \e[9m | 9 | Prečiarknutie |
| \e[21m | 21 | Dvojité podčiarknutieNiektoré terminály čítajú 21 ako „zrušiť tučné“. |
| \e[22m | 22 | Normálna intenzita: ruší tučné aj slabé |
| \e[23m | 23 | Ruší kurzívu |
| \e[24m | 24 | Ruší podčiarknutie |
| \e[27m | 27 | Ruší inverziu |
| \e[29m | 29 | Ruší prečiarknutie |
Farba textu
17Osem štandardných farieb a ich jasné náprotivky. To, čo čitateľ naozaj vidí, je výklad jeho témy terminálu — „červená“ je pozícia v palete, nie hex hodnota.
| Sekvencia | Parameter | Účinok |
|---|---|---|
| \e[30m | 30 | Čierna text |
| \e[31m | 31 | Červená text |
| \e[32m | 32 | Zelená text |
| \e[33m | 33 | Žltá text |
| \e[34m | 34 | Modrá text |
| \e[35m | 35 | Purpurová text |
| \e[36m | 36 | Azúrová text |
| \e[37m | 37 | Biela text |
| \e[39m | 39 | Späť na predvolenú farbu textu |
| \e[90m | 90 | Jasná čierna text |
| \e[91m | 91 | Jasná červená text |
| \e[92m | 92 | Jasná zelená text |
| \e[93m | 93 | Jasná žltá text |
| \e[94m | 94 | Jasná modrá text |
| \e[95m | 95 | Jasná purpurová text |
| \e[96m | 96 | Jasná azúrová text |
| \e[97m | 97 | Jasná biela text |
Farba pozadia
17Rovnaká paleta posunutá o desať. Kód pozadia nastaví bunku za textom a platí, kým sa nezruší.
| Sekvencia | Parameter | Účinok |
|---|---|---|
| \e[40m | 40 | Čierna pozadie |
| \e[41m | 41 | Červená pozadie |
| \e[42m | 42 | Zelená pozadie |
| \e[43m | 43 | Žltá pozadie |
| \e[44m | 44 | Modrá pozadie |
| \e[45m | 45 | Purpurová pozadie |
| \e[46m | 46 | Azúrová pozadie |
| \e[47m | 47 | Biela pozadie |
| \e[49m | 49 | Späť na predvolené pozadie |
| \e[100m | 100 | Jasná čierna pozadie |
| \e[101m | 101 | Jasná červená pozadie |
| \e[102m | 102 | Jasná zelená pozadie |
| \e[103m | 103 | Jasná žltá pozadie |
| \e[104m | 104 | Jasná modrá pozadie |
| \e[105m | 105 | Jasná purpurová pozadie |
| \e[106m | 106 | Jasná azúrová pozadie |
| \e[107m | 107 | Jasná biela pozadie |
256 farieb a true color
4Dve rozšírenia toho istého SGR mechanizmu. Obe sú široko, no nie univerzálne podporované; terminál, ktorý im nerozumie, sekvenciu zvyčajne ignoruje namiesto toho, aby ju vypísal.
| Sekvencia | Parameter | Účinok |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Text vo farbe palety n, 0 – 2550 – 15 je šestnástka vyššie, 16 – 231 farebná kocka 6×6×6, 232 – 255 stupnica šedej. |
| \e[48;5;<n>m | 48;5;n | Pozadie vo farbe palety n, 0 – 255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Text v presnej 24-bitovej farbe |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Pozadie v presnej 24-bitovej farbe |
Pohyb kurzora
11Presuny neposúvajú obraz ani nezalamujú: kurzor, ktorý už je hore na obrazovke, ignoruje požiadavku ísť vyššie.
| Sekvencia | Parameter | Účinok |
|---|---|---|
| \e[<n>A | A | O n riadkov hore |
| \e[<n>B | B | O n riadkov dole |
| \e[<n>C | C | O n stĺpcov doprava |
| \e[<n>D | D | O n stĺpcov doľava |
| \e[<n>E | E | O n riadkov dole, na začiatok riadka |
| \e[<n>F | F | O n riadkov hore, na začiatok riadka |
| \e[<n>G | G | Na stĺpec n v aktuálnom riadku |
| \e[<row>;<col>H | H | Na absolútny riadok a stĺpec, počítané od 1 |
| \e[s | s | Zapamätá si pozíciu kurzora |
| \e[u | u | Vráti sa na zapamätanú pozíciu |
| \e[6n | 6n | Spýta sa terminálu, kde je kurzorTerminál odpovie na štandardný vstup ako \e[<riadok>;<stĺpec>R — jediná sekvencia tu, ktorá vracia odpoveď. |
Mazanie
7Mazanie zapíše medzery s aktuálnou farbou pozadia; kurzorom nepohne.
| Sekvencia | Parameter | Účinok |
|---|---|---|
| \e[0J | 0J | Zmaže od kurzora do konca obrazovky |
| \e[1J | 1J | Zmaže od začiatku obrazovky po kurzor |
| \e[2J | 2J | Zmaže celú obrazovkuKurzor zostane, kde bol — preto sa zvyčajne kombinuje s \e[H. |
| \e[3J | 3J | Zmaže aj históriu posúvania |
| \e[0K | 0K | Zmaže od kurzora do konca riadka |
| \e[1K | 1K | Zmaže od začiatku riadka po kurzor |
| \e[2K | 2K | Zmaže celý riadok\r\e[2K je bežný spôsob, ako prekresliť riadok s priebehom na mieste. |
Režimy terminálu
8Privátne režimy, označené otáznikom. Menia správanie terminálu, nie vzhľad jedného kusu textu, a každý z nich treba pred ukončením programu vrátiť späť.
| Sekvencia | Parameter | Účinok |
|---|---|---|
| \e[?25l | ?25l | Skryje kurzor |
| \e[?25h | ?25h | Zobrazí kurzor |
| \e[?1049h | ?1049h | Prepne na alternatívnu obrazovkuTo, čo používa celoobrazovkový program, aby história shellu pod ním prežila. |
| \e[?1049l | ?1049l | Prepne späť na hlavnú obrazovku |
| \e[?7h | ?7h | Zalomí dlhé riadky na pravom okraji |
| \e[?7l | ?7l | Nechá dlhé riadky pretiecť za pravý okraj |
| \e[?2004h | ?2004h | Zapne bracketed pasteVložený text príde obalený v \e[200~ a \e[201~, takže shell rozozná písanie od vkladania. |
| \e[?2004l | ?2004l | Vypne bracketed paste |