ANSI escape koder
En ANSI escape kod är en kort sekvens av tecken som ett program skriver ut för att säga till terminalen att göra något annat än visa dessa tecken — färga nästa ord rött, flytta markören upp två rader, rensa skärmen. Terminalen absorberar sekvensen och utför den, vilket är varför en loggfil full av dem ser ut som bullriga tecken när du öppnar den i en editor.
Varje kod nedan börjar med escape-byten och, med ett undantag, en öppen parentes. Parameterkolumnen visar delen mellan parentesen och det avslutande brevet, vilket är det du samlar i kod; den första kolumnen visar hela sekvensen som du skulle skriva den i ett skal.
Stödet varierar beroende på terminal, och denna sida säger det där det spelar roll. De åtta grundfärgerna och fet stil fungerar överallt; blinkande, dubbelunderstruken och true color gör det inte.
Anatomi för en sekvens
6Varje kod på denna sida har samma form: escape-byten, en öppen parentes, några parametrar och ett brev som säger vad du ska göra med dem.
| Sekvens | Parameter | Effekt |
|---|---|---|
| \e | 0x1B | Escape-byten som startar varje sekvensSkriven \e i ett skal, \033 i C, \x1b på de flesta språken och \u001b i JSON och Java. |
| \e[ | CSI | Control Sequence Introducer — öppnar ett parametriserat kommando |
| \e[<n>m | m | Select Graphic Rendition: allt om färg och stil slutar med m |
| \e[1;4;31m | 1;4;31 | Flera parametrar på en gång, åtskilda av semikolonFet, understruken och röd i en sekvens — kortare än tre separata och identisk effekt. |
| \e[0m | 0 | Rensar alla attribut tillbaka till terminalens standardSkicka detta vid slutet av färgad utmatning. Ett program som avslutas utan det lämnar användarens prompt färgad. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | En klickbar hyperlänk i terminaler som stöder enEn OSC-sekvens snarare än en CSI, och avslutad av ESC \ istället för ett brev. |
Textattribut
14Stödet är ojämnt under de första fem. Blink ignoreras nästan överallt, och några terminaler visar dim och italic identiskt.
| Sekvens | Parameter | Effekt |
|---|---|---|
| \e[1m | 1 | Fet eller ljus |
| \e[2m | 2 | Svag |
| \e[3m | 3 | Kursiv |
| \e[4m | 4 | Understruken |
| \e[5m | 5 | BlinkningAllmänt ignorerad; de flesta moderna terminaler visar det som vanlig text. |
| \e[7m | 7 | Omvänd: byter förgrund och bakgrund |
| \e[8m | 8 | Dold: texten är där men ritas inte |
| \e[9m | 9 | Genomstruken |
| \e[21m | 21 | DubbelunderstrukenVissa terminaler läser 21 som "fet av". |
| \e[22m | 22 | Normal intensitet: annullerar fet och svag |
| \e[23m | 23 | Annullerar kursiv |
| \e[24m | 24 | Annullerar understruken |
| \e[27m | 27 | Annullerar omvänd |
| \e[29m | 29 | Annullerar genomstruken |
Textfärg
17De åtta standardfärgerna och deras ljusa motsvarigheter. Vad läsaren faktiskt ser är sin terminals tolkning av var och en — "röd" är en plats i en palett, inte ett hexvärde.
| Sekvens | Parameter | Effekt |
|---|---|---|
| \e[30m | 30 | Svart text |
| \e[31m | 31 | Röd text |
| \e[32m | 32 | Grön text |
| \e[33m | 33 | Gul text |
| \e[34m | 34 | Blå text |
| \e[35m | 35 | Magentaröd text |
| \e[36m | 36 | Cyan text |
| \e[37m | 37 | Vit text |
| \e[39m | 39 | Tillbaka till standard textfärg |
| \e[90m | 90 | Ljus svart text |
| \e[91m | 91 | Ljus röd text |
| \e[92m | 92 | Ljus grön text |
| \e[93m | 93 | Ljus gul text |
| \e[94m | 94 | Ljus blå text |
| \e[95m | 95 | Ljus magentaröd text |
| \e[96m | 96 | Ljus cyan text |
| \e[97m | 97 | Ljus vit text |
Bakgrundsfärg
17Samma palett skiftad med tio. En bakgrundskod ställer in cellen bakom texten och förblir i kraft tills den återställs.
| Sekvens | Parameter | Effekt |
|---|---|---|
| \e[40m | 40 | Svart bakgrund |
| \e[41m | 41 | Röd bakgrund |
| \e[42m | 42 | Grön bakgrund |
| \e[43m | 43 | Gul bakgrund |
| \e[44m | 44 | Blå bakgrund |
| \e[45m | 45 | Magenta bakgrund |
| \e[46m | 46 | Cyan bakgrund |
| \e[47m | 47 | Vit bakgrund |
| \e[49m | 49 | Tillbaka till standard bakgrund |
| \e[100m | 100 | Ljus svart bakgrund |
| \e[101m | 101 | Ljus röd bakgrund |
| \e[102m | 102 | Ljus grön bakgrund |
| \e[103m | 103 | Ljus gul bakgrund |
| \e[104m | 104 | Ljus blå bakgrund |
| \e[105m | 105 | Ljus magenta bakgrund |
| \e[106m | 106 | Ljus cyan bakgrund |
| \e[107m | 107 | Ljus vit bakgrund |
256 färger och true color
4Två tillägg till samma SGR-mekanism. Båda är allmänt men inte universellt stödda; en terminal som inte förstår dem ignorerar vanligtvis sekvensen istället för att skriva ut den.
| Sekvens | Parameter | Effekt |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Text i palett färg n, 0–2550–15 är de sexton ovan, 16–231 en 6×6×6 färgkub, 232–255 en gråskala ramp. |
| \e[48;5;<n>m | 48;5;n | Bakgrund i palett färg n, 0–255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Text i en exakt 24-bitars färg |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Bakgrund i en exakt 24-bitars färg |
Markörförflyttning
11Förflyttningar bläddrar inte och radbryts inte: en markör redan högst upp på skärmen ignorerar en begäran att gå upp.
| Sekvens | Parameter | Effekt |
|---|---|---|
| \e[<n>A | A | Upp n rader |
| \e[<n>B | B | Ner n rader |
| \e[<n>C | C | Höger n kolumner |
| \e[<n>D | D | Vänster n kolumner |
| \e[<n>E | E | Ner n rader, till radstarten |
| \e[<n>F | F | Upp n rader, till radstarten |
| \e[<n>G | G | Till kolumn n i den aktuella raden |
| \e[<row>;<col>H | H | Till en absolut rad och kolumn, räknat från 1 |
| \e[s | s | Kom ihåg markörpositionen |
| \e[u | u | Gå tillbaka till den sparade positionen |
| \e[6n | 6n | Fråga terminalen var markören ärTerminalen svarar på standard input som \e[<rad>;<col>R — den enda sekvensen här som ger ett svar. |
Radering
7Radering skriver mellanslag med den aktuella bakgrundsfärgen; det rör inte markören.
| Sekvens | Parameter | Effekt |
|---|---|---|
| \e[0J | 0J | Rensa från markören till skärmens slut |
| \e[1J | 1J | Rensa från skärmens början till markören |
| \e[2J | 2J | Rensa hela skärmenMarkören stannar där den var, varför detta vanligtvis kombineras med \e[H. |
| \e[3J | 3J | Rensa även rullningsbufferten |
| \e[0K | 0K | Rensa från markören till radens slut |
| \e[1K | 1K | Rensa från radens början till markören |
| \e[2K | 2K | Rensa hela raden\r\e[2K är det vanliga sättet att rita om en förloppsrad på plats. |
Terminallägen
8Privata lägen, markerade med ett frågetecken. De ändrar hur terminalen fungerar snarare än hur en textbit ser ut, och var och en måste stängas av innan programmet avslutas.
| Sekvens | Parameter | Effekt |
|---|---|---|
| \e[?25l | ?25l | Göm markören |
| \e[?25h | ?25h | Visa markören |
| \e[?1049h | ?1049h | Byt till alternativ skärmDet som ett fullskärmssprogram använder så att skalets rulling överlevnad. |
| \e[?1049l | ?1049l | Växla tillbaka till huvudskärmen |
| \e[?7h | ?7h | Radbryt långrader vid höger kant |
| \e[?7l | ?7l | Låt långrader löpa av höger kant |
| \e[?2004h | ?2004h | Slå på rad-inmatning med markörerInklistrad text anländer insvept i \e[200~ och \e[201~, så ett skal kan skilja skrift från inlimning. |
| \e[?2004l | ?2004l | Slå av rad-inmatning med markörer |