Coduri de escape ANSI
Un cod de escape ANSI este o scurtă secvență de caractere pe care un program o tipărește pentru a spune terminalului să facă ceva altceva decât să afișeze acele caractere — să coloreze următoarele cuvinte în roșu, să mute cursorul două linii în sus, să șteargă ecranul. Terminalul înghite secvența și o execută, motiv pentru care un fișier jurnal plin de ele arată ca zgomot atunci când îl deschideți într-un editor.
Fiecare cod de mai jos începe cu byte-ul escape și, cu o singură excepție, cu o paranteză deschisă. Coloana parametru indică partea dintre paranteză și litera finală, care este piesa pe care o asamblați în cod; prima coloană arată întreaga secvență așa cum ați scrie-o într-un shell.
Suportul variază între terminale și această pagină o menționează acolo unde contează. Opt culori de bază și bold funcționează peste tot; blink, underline dublu și true color nu.
Anatomia unei secvențe
6Fiecare cod de pe această pagină are aceeași formă: byte escape, paranteză deschisă, parametri și o literă care spune ce se face cu ei.
| Secvență | Parametru | Efect |
|---|---|---|
| \e | 0x1B | Byte-ul escape care începe fiecare secvențăScris \e într-un shell, \033 în C, \x1b în majoritatea limbajelor și \u001b în JSON și Java. |
| \e[ | CSI | Control Sequence Introducer — deschide o comandă parametrizată |
| \e[<n>m | m | Select Graphic Rendition: orice culoare și stil se termină în m |
| \e[1;4;31m | 1;4;31 | Mai mulți parametri deodată, separați prin puncte și virguleBold, underlined și roșu într-o singură secvență — mai scurt decât trei separate și identic în efect. |
| \e[0m | 0 | Șterge orice atribut înapoi la setarea implicită a terminaluluiEmiți aceasta la sfârșitul ieșirii colorate. Un program care se termină fără aceasta lasă promptul utilizatorului colorat. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | Un hyperlink clickabil, în terminale care o suportăO secvență OSC mai degrabă decât una CSI și terminată de ESC \ în loc de o literă. |
Atribute de text
14Suportul este inegal sub primele cinci. Blink este ignorat aproape peste tot, și câteva terminale redau dim și italic identic.
| Secvență | Parametru | Efect |
|---|---|---|
| \e[1m | 1 | Bold sau bright |
| \e[2m | 2 | Dim |
| \e[3m | 3 | Italic |
| \e[4m | 4 | Underline |
| \e[5m | 5 | BlinkLarg ignorat; majoritatea terminalelor moderne o redau ca text obișnuit. |
| \e[7m | 7 | Reverse: schimbă foreground și background |
| \e[8m | 8 | Hidden: textul este acolo dar nu este desenat |
| \e[9m | 9 | Strikethrough |
| \e[21m | 21 | Underline dubluUnele terminale citesc 21 ca "anulează bold". |
| \e[22m | 22 | Intensitate normală: anulează bold și dim |
| \e[23m | 23 | Anulează italic |
| \e[24m | 24 | Anulează underline |
| \e[27m | 27 | Anulează reverse |
| \e[29m | 29 | Anulează strikethrough |
Culoare text
17Opt culori standard și omologii lor luminoși. Ceea ce cititorul vede de fapt este interpretarea temei sale terminal a fiecăruia — "roșu" este o poziție într-o paletă, nu o valoare hex.
| Secvență | Parametru | Efect |
|---|---|---|
| \e[30m | 30 | Text negru |
| \e[31m | 31 | Text roșu |
| \e[32m | 32 | Text verde |
| \e[33m | 33 | Text galben |
| \e[34m | 34 | Text albastru |
| \e[35m | 35 | Text magenta |
| \e[36m | 36 | Text cyan |
| \e[37m | 37 | Text alb |
| \e[39m | 39 | Înapoi la culoarea de text implicită |
| \e[90m | 90 | Text negru luminos |
| \e[91m | 91 | Text roșu luminos |
| \e[92m | 92 | Text verde luminos |
| \e[93m | 93 | Text galben luminos |
| \e[94m | 94 | Text albastru luminos |
| \e[95m | 95 | Text magenta luminos |
| \e[96m | 96 | Text cyan luminos |
| \e[97m | 97 | Text alb luminos |
Culoare fundal
17Aceeași paletă deplasată cu zece. Un cod de fundal stabilește celula din spatele textului și rămâne efectiv până când este resetat.
| Secvență | Parametru | Efect |
|---|---|---|
| \e[40m | 40 | Fundal negru |
| \e[41m | 41 | Fundal roșu |
| \e[42m | 42 | Fundal verde |
| \e[43m | 43 | Fundal galben |
| \e[44m | 44 | Fundal albastru |
| \e[45m | 45 | Fundal magenta |
| \e[46m | 46 | Fundal cyan |
| \e[47m | 47 | Fundal alb |
| \e[49m | 49 | Înapoi la fundal implicit |
| \e[100m | 100 | Fundal negru luminos |
| \e[101m | 101 | Fundal roșu luminos |
| \e[102m | 102 | Fundal verde luminos |
| \e[103m | 103 | Fundal galben luminos |
| \e[104m | 104 | Fundal albastru luminos |
| \e[105m | 105 | Fundal magenta luminos |
| \e[106m | 106 | Fundal cyan luminos |
| \e[107m | 107 | Fundal alb luminos |
256 culori și true color
4Două extensii la același mecanism SGR. Ambele sunt larg dar nu universal suportate; un terminal care nu le înțelege de obicei ignoră secvența decât să o tipărească.
| Secvență | Parametru | Efect |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Text în culoare paletă n, 0–2550–15 sunt cele șaisprezece de mai sus, 16–231 un cub de culoare 6×6×6, 232–255 o rampă de gri. |
| \e[48;5;<n>m | 48;5;n | Fundal în culoare paletă n, 0–255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Text într-o culoare exactă 24-bit |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Fundal într-o culoare exactă 24-bit |
Mișcare cursor
11Mișcările nu derulează și nu se înfășoară: un cursor deja în vârful ecranului ignoră o solicitare de a merge mai sus.
| Secvență | Parametru | Efect |
|---|---|---|
| \e[<n>A | A | Sus n rânduri |
| \e[<n>B | B | Jos n rânduri |
| \e[<n>C | C | Dreapta n coloane |
| \e[<n>D | D | Stânga n coloane |
| \e[<n>E | E | Jos n rânduri, la începutul rândului |
| \e[<n>F | F | Sus n rânduri, la începutul rândului |
| \e[<n>G | G | La coloana n din rândul curent |
| \e[<row>;<col>H | H | La rând și coloană absolute, numărând de la 1 |
| \e[s | s | Ține minte poziția cursorului |
| \e[u | u | Revino la poziția ținută minte |
| \e[6n | 6n | Întreabă terminalul unde este cursorulTerminalul răspunde la intrarea standard ca \e[<rând>;<coloană>R — singura secvență aici care produce un răspuns. |
Ștergere
7Ștergerea scrie spații cu culoarea de fundal curentă; nu mută cursorul.
| Secvență | Parametru | Efect |
|---|---|---|
| \e[0J | 0J | Șterge de la cursor la sfârșitul ecranului |
| \e[1J | 1J | Șterge de la începutul ecranului la cursor |
| \e[2J | 2J | Șterge întregul ecranCursorul rămâne unde era, motiv pentru care aceasta este de obicei paired cu \e[H. |
| \e[3J | 3J | Șterge și bufferul de derulare |
| \e[0K | 0K | Șterge de la cursor la sfârșitul rândului |
| \e[1K | 1K | Șterge de la începutul rândului la cursor |
| \e[2K | 2K | Șterge rândul complet\r\e[2K este modul obișnuit de a redesena o linie de progres în loc. |
Moduri terminal
8Moduri private, marcate de semnul întrebării. Ele schimbă comportamentul terminalului mai degrabă decât aspectul unei bucăți de text, și fiecare trebuie întors înapoi înainte ca programul să se încheie.
| Secvență | Parametru | Efect |
|---|---|---|
| \e[?25l | ?25l | Ascunde cursorul |
| \e[?25h | ?25h | Arată cursorul |
| \e[?1049h | ?1049h | Comută la ecranul alternativCeea ce folosește un program cu ecran plin pentru ca derularea shell-ului să supraviețuiască sub el. |
| \e[?1049l | ?1049l | Comută înapoi la ecranul principal |
| \e[?7h | ?7h | Înfășoară liniile lungi la marginea dreaptă |
| \e[?7l | ?7l | Lasă liniile lungi să curgă peste marginea dreaptă |
| \e[?2004h | ?2004h | Activează bracketed pasteTextul lipit sosește înfășurat în \e[200~ și \e[201~, deci shell-ul poate distinge tastarea de lipire. |
| \e[?2004l | ?2004l | Dezactivează bracketed paste |