İçeriğe atla

ANSI escape kodları

ANSI escape kodu, bir programın terminale verdiği ve karakterleri ekranda göstermek yerine başka bir şey yapmasını sağlayan kısa bir karakter dizisidir — sonraki sözcükleri kırmızı yapar, imleci iki satır yukarı taşır, ekranı temizler. Terminal sekvensi işler ve yürütür, bu yüzden bunlarla dolu bir günlük dosya editörde gürültü gibi görünür.

Aşağıdaki her kod escape baytı ile başlar ve bir istisna dışında açılı parantez ile başlar. Parameter sütunu parantez ile son harf arasındaki kısmı gösterir; birinci sütun tüm sekvenzi shell'de yazacağınız gibi gösterir.

Destek terminallar arasında farklılık gösterir ve bu sayfa gerekli yerlerde bunu belirtir. Sekiz temel renk ve kalın her yerde çalışır; yanıp sönen, çift altçizgi ve true-color çalışmaz.

Sekansın yapısı

6

Bu sayfadaki her kod aynı şekildedir: escape baytı, açılı parantez, parametreler ve bunlarla ne yapılacağını söyleyen bir harf.

SekansParameterEtki
\e0x1BHer sekansı başlatan escape baytıShell'de \e, C'de \033, çoğu dilde \x1b ve JSON ve Java'da \u001b olarak yazılır.
\e[CSIKontrol Dizisi Tanıtıcısı — parametreli bir komut açar
\e[<n>mmGrafik İşleme Seç: tüm renk ve stil m ile biter
\e[1;4;31m1;4;31Birkaç parametre aynı anda, noktalı virgülle ayrılmışKalın, altçizili ve kırmızı tek sekansda — üç ayrı diziden daha kısa ve aynı etki.
\e[0m0Her özelliği terminal varsayılanına sıfırlarRenkli çıktının sonunda bunu yayınlayın. Bunu yayınlamadan çıkan bir program kullanıcıya renkli prompt verir.
\e]8;;URL\e\\text\e]8;;\e\\OSC 8Destekleyen terminallerde tıklanabilir bağlantıCSI değil OSC dizisidir ve harf yerine ESC \\ ile sonlandırılır.

Metin öznitelikleri

14

İlk beşin altında destek eşitsizdir. Yanıp sönen neredeyse hiçbir yerde çalışmaz ve birkaç terminal soluk ve eğriyi aynı şekilde işler.

SekansParameterEtki
\e[1m1Kalın veya parlak
\e[2m2Soluk
\e[3m3Eğik
\e[4m4Altçizgi
\e[5m5Yanıp sönenÇoğu yerde görmezden gelinir; modern terminaller düz metin olarak işler.
\e[7m7Ters: ön ve arka planı değiştirir
\e[8m8Gizli: metin var ama çizilmez
\e[9m9Üstü çizili
\e[21m21Çift altçizgiBazı terminaller 21'i "kalınlığı iptal et" olarak okur.
\e[22m22Normal yoğunluk: kalın ve soluk iptal eder
\e[23m23Eğriyi iptal eder
\e[24m24Altçizgiyi iptal eder
\e[27m27Tersi iptal eder
\e[29m29Üstü çiziliyi iptal eder

Metin rengi

17

Sekiz standart renk ve parlak karşılıkları. Okuyucunun gördüğü terminal teması yorumuyla ilgilidir — "kırmızı" palet pozisyonudur, hex değer değil.

SekansParameterEtki
\e[30m30Siyah metin
\e[31m31Kırmızı metin
\e[32m32Yeşil metin
\e[33m33Sarı metin
\e[34m34Mavi metin
\e[35m35Mor metin
\e[36m36Camgöbeği metin
\e[37m37Beyaz metin
\e[39m39Varsayılan metin rengine dön
\e[90m90Parlak siyah metin
\e[91m91Parlak kırmızı metin
\e[92m92Parlak yeşil metin
\e[93m93Parlak sarı metin
\e[94m94Parlak mavi metin
\e[95m95Parlak mor metin
\e[96m96Parlak camgöbeği metin
\e[97m97Parlak beyaz metin

Arka plan rengi

17

Aynı palet on kaydırılmış. Arka plan kodu hücreyi metin arkasında ayarlar ve sıfırlanana kadar etkili kalır.

SekansParameterEtki
\e[40m40Siyah arka plan
\e[41m41Kırmızı arka plan
\e[42m42Yeşil arka plan
\e[43m43Sarı arka plan
\e[44m44Mavi arka plan
\e[45m45Mor arka plan
\e[46m46Camgöbeği arka plan
\e[47m47Beyaz arka plan
\e[49m49Varsayılan arka plana dön
\e[100m100Parlak siyah arka plan
\e[101m101Parlak kırmızı arka plan
\e[102m102Parlak yeşil arka plan
\e[103m103Parlak sarı arka plan
\e[104m104Parlak mavi arka plan
\e[105m105Parlak mor arka plan
\e[106m106Parlak camgöbeği arka plan
\e[107m107Parlak beyaz arka plan

256 renk ve true-color

4

Aynı SGR mekanizmasının iki uzantısı. Her ikisi de geniş ancak evrensel olarak desteklenmez; anlamazsa terminal sekvensi göstermek yerine genellikle yok sayar.

SekansParameterEtki
\e[38;5;<n>m38;5;nPalet rengi n'de metin, 0-2550-15 yukarıdaki on altı, 16-231 6×6×6 renk küpü, 232-255 gri ölçeği.
\e[48;5;<n>m48;5;nPalet rengi n'de arka plan, 0-255
\e[38;2;<r>;<g>;<b>m38;2;r;g;bTam 24-bit renkde metin
\e[48;2;<r>;<g>;<b>m48;2;r;g;bTam 24-bit renkde arka plan

İmleç hareketi

11

Hareketler kaydırmaz ve kaydırmaz: ekranın üstünde olan imleç yukarı gitme talebini görmezden gelir.

SekansParameterEtki
\e[<n>AAn satır yukarı
\e[<n>BBn satır aşağı
\e[<n>CCn sütun sağa
\e[<n>DDn sütun sola
\e[<n>EEn satır aşağı, satırın başına
\e[<n>FFn satır yukarı, satırın başına
\e[<n>GGGeçerli satırın n sütununa
\e[<row>;<col>HHMutlak satır ve sütuna, 1'den sayılarak
\e[ssİmleç konumunu hatırla
\e[uuHatırlanan konuma geri dön
\e[6n6nTerminal'den imlecin nerede olduğunu sorTerminal stdin'de \e[<satır>;<sütun>R olarak yanıtlar — yanıt üreten tek sekans.

Silme

7

Silme, geçerli arka plan rengine sahip boşluklar yazar; imleci hareket ettirmez.

SekansParameterEtki
\e[0J0Jİmleçten ekranın sonuna kadar sil
\e[1J1JEkranın başından imlece kadar sil
\e[2J2JTüm ekranı silİmleç olduğu yerde kalır — bu yüzden genellikle \e[H ile birleştirilir.
\e[3J3JKaydırma tamponu da sil
\e[0K0Kİmleçten satırın sonuna kadar sil
\e[1K1KSatırın başından imlece kadar sil
\e[2K2KTüm satırı sil\r\e[2K ilerleme satırını yerinde yeniden çizmek için sık yöntemdir.

Terminal modları

8

Soru işareti ile işaretlenmiş özel modlar. Bir metin parçasının görünüşü yerine terminal davranışını değiştirirler ve program çıkmadan önce her biri kapatılmalı.

SekansParameterEtki
\e[?25l?25lİmleci gizle
\e[?25h?25hİmleci göster
\e[?1049h?1049hAlternatif ekrana geçTam ekran programının shell kaydırmasını altında tutması için kullanır.
\e[?1049l?1049lAna ekrana geri geç
\e[?7h?7hUzun satırları sağ kenardan kapat
\e[?7l?7lUzun satırların sağ kenardan taşmasına izin ver
\e[?2004h?2004hBracketed yapıştırmayı açYapıştırılan metin \e[200~ ve \e[201~ ile sarılı gelir, böylece shell yazı yazmayı yapıştırmadan ayırt edebilir.
\e[?2004l?2004lBracketed yapıştırmayı kapat

FAQ

Program bittikten sonra çıktı neden renkli kalıyor?
Çünkü hiçbir şey sıfırlamıyor. Bir renk kodu başka biri tarafından değiştirilene kadar etkili kalır, bu yüzden ortasında kapat alan bir program shell'e renkli prompt verir. Çıkmadan önce \e[0m yazdırın — hata yolunu da dahil edin, çoğu kişi bunu unutur.
\e, \033 ve \x1b arasındaki fark nedir?
Hiçbiri. Üçü de aynı bayt 0x1B'dir, belirli bir dilin yazma şekli: bash ve zsh'de \e, C'de ve echo -e'de \033, Python, Go, Rust ve JavaScript'te \x1b, JSON ve Java'da \u001b.
Günlük dosyasından bunları nasıl kaldırırım?
Bunu bu sitedeki ANSI temizleyiciye yapıştırın. Renk, imleç ve mod dizilerini kaldırır ve renkleri bırakmak yerine HTML veya Markdown'a dönüştürebilir, bu da günlüğün amacı vurgulama ise istediğiniz şeydir.
Renkleri hardcoded yapmalı mı yoksa bir kütüphane mi kullanmalı?
Birkaç satırdan fazlası için bir kütüphane kullanın — çıkışın terminali olup olmadığını kontrol eder. Bir pipe'a veya dosyaya yazılan renk kodları dosyada kalır ve böyle build günlükleri gürültü içerir.
Kalın, parlak ile aynı mı?
Tarihi olarak evet ve hâlâ bazı terminallerde. Kod 1 kalın olarak tanımlandı ama birçok terminal bunu palettenin parlak yarısına geçerek uyguladı, bu yüzden kalın kırmızı ve parlak kırmızı aynı görünebilir. 90-97 aralığı kalıntı istemenize izin vermek için vardır.