ANSI renk kaçış dizilerinin listesi


225

Çoğu terminalde, \033ANSI kaçış dizisini kullanarak çıkışı renklendirmek mümkündür .

Desteklenen tüm renk ve seçeneklerin bir listesini arıyorum (parlak ve yanıp sönen gibi).

Muhtemelen onları destekleyen terminaller arasında farklılıklar olduğundan, esas olarak xterm uyumlu terminaller tarafından desteklenen dizilerle ilgileniyorum.


Aslında, olabilir pencereler cmd renkleri kullanın. stackoverflow.com/questions/41207496/…
Joel

Yanıtlar:


514

Aradığınız ANSI kaçış dizileri, Grafik Oluşturmayı Seç alt kümesidir. Bunların hepsi şu şekildedir:

\033[XXXm

burada XXXnoktalı virgülle ayrılmış parametreler dizisidir.

C'ye metin yazmak için kırmızı, kalın ve altı çizili hale getirin (aşağıdaki diğer birçok seçeneği tartışacağız):

printf("\033[31;1;4mHello\033[0m");

C ++ 'da

std::cout<<"\033[31;1;4mHello\033[0m";

Python3'te şunu kullanırsınız:

print("\033[31;1;4mHello\033[0m")

ve Bash’de

echo -e "\033[31;1;4mHello\033[0m"

burada ilk bölüm metni kırmızı ( 31), kalın ( 1), altı çizili ( 4) yapar ve son bölüm tüm bunları ( 0) temizler .

Aşağıdaki tabloda açıklandığı gibi, koyulık, yazı tipi, alt çizgi ve c gibi ayarlayabileceğiniz çok sayıda metin özelliği vardır. ( StackOverflow'un yanıtlara uygun tablolar koymanıza izin vermemesi saçma değil mi?)

Yazı Tipi Efektleri

╔══════════╦════════════════════════════════╦═════════════════════════════════════════════════════════════════════════╗
║  Code    ║             Effect             ║                                   Note                                  ║
╠══════════╬════════════════════════════════╬═════════════════════════════════════════════════════════════════════════╣
║ 0        ║  Reset / Normal                ║  all attributes off                                                     ║
║ 1        ║  Bold or increased intensity   ║                                                                         ║
║ 2        ║  Faint (decreased intensity)   ║  Not widely supported.                                                  ║
║ 3        ║  Italic                        ║  Not widely supported. Sometimes treated as inverse.                    ║
║ 4        ║  Underline                     ║                                                                         ║
║ 5        ║  Slow Blink                    ║  less than 150 per minute                                               ║
║ 6        ║  Rapid Blink                   ║  MS-DOS ANSI.SYS; 150+ per minute; not widely supported                 ║
║ 7        ║  [[reverse video]]             ║  swap foreground and background colors                                  ║
║ 8        ║  Conceal                       ║  Not widely supported.                                                  ║
║ 9        ║  Crossed-out                   ║  Characters legible, but marked for deletion.  Not widely supported.    ║
║ 10       ║  Primary(default) font         ║                                                                         ║
║ 11–19    ║  Alternate font                ║  Select alternate font `n-10`                                           ║
║ 20       ║  Fraktur                       ║  hardly ever supported                                                  ║
║ 21       ║  Bold off or Double Underline  ║  Bold off not widely supported; double underline hardly ever supported. ║
║ 22       ║  Normal color or intensity     ║  Neither bold nor faint                                                 ║
║ 23       ║  Not italic, not Fraktur       ║                                                                         ║
║ 24       ║  Underline off                 ║  Not singly or doubly underlined                                        ║
║ 25       ║  Blink off                     ║                                                                         ║
║ 27       ║  Inverse off                   ║                                                                         ║
║ 28       ║  Reveal                        ║  conceal off                                                            ║
║ 29       ║  Not crossed out               ║                                                                         ║
║ 30–37    ║  Set foreground color          ║  See color table below                                                  ║
║ 38       ║  Set foreground color          ║  Next arguments are `5;<n>` or `2;<r>;<g>;<b>`, see below                       ║
║ 39       ║  Default foreground color      ║  implementation defined (according to standard)                         ║
║ 40–47    ║  Set background color          ║  See color table below                                                  ║
║ 48       ║  Set background color          ║  Next arguments are `5;<n>` or `2;<r>;<g>;<b>`, see below                       ║
║ 49       ║  Default background color      ║  implementation defined (according to standard)                         ║
║ 51       ║  Framed                        ║                                                                         ║
║ 52       ║  Encircled                     ║                                                                         ║
║ 53       ║  Overlined                     ║                                                                         ║
║ 54       ║  Not framed or encircled       ║                                                                         ║
║ 55       ║  Not overlined                 ║                                                                         ║
║ 60       ║  ideogram underline            ║  hardly ever supported                                                  ║
║ 61       ║  ideogram double underline     ║  hardly ever supported                                                  ║
║ 62       ║  ideogram overline             ║  hardly ever supported                                                  ║
║ 63       ║  ideogram double overline      ║  hardly ever supported                                                  ║
║ 64       ║  ideogram stress marking       ║  hardly ever supported                                                  ║
║ 65       ║  ideogram attributes off       ║  reset the effects of all of 60-64                                      ║
║ 90–97    ║  Set bright foreground color   ║  aixterm (not in standard)                                              ║
║ 100–107  ║  Set bright background color   ║  aixterm (not in standard)                                              ║
╚══════════╩════════════════════════════════╩═════════════════════════════════════════════════════════════════════════╝

2 bit Renkler

Bunu zaten yaptınız!

4 bit Renkler

Terminal renklerini uygulayan standartlar sınırlı (4 bit) seçeneklerle başladı. Aşağıdaki tablo, çeşitli terminal emülatörleri tarafından kullanılan arka plan ve ön plan renklerinin RGB değerlerini listeler:

Çeşitli terminal emülatörleri tarafından uygulanan ANSI renk tablosu

Yukarıdakileri kullanarak yeşil bir arka plan üzerinde kırmızı metin yapabilirsiniz (ancak neden?):

\033[31;42m

11 Renk (Bir Interlude)

Brent Berlin ve Paul Kay, "Temel Renk Terimleri: Evrensellikleri ve Evrimleri" başlıklı kitaplarında, bir dizi dil ailesinden yirmi farklı dilden toplanan verileri, olası on bir temel renk kategorisini belirlemek için kullandılar: beyaz, siyah, kırmızı, yeşil, sarı, mavi, kahverengi, mor, pembe, turuncu ve gri.

Berlin ve Kay, maksimum on bir renk kategorisinden daha az olan dillerde, renklerin belirli bir evrimsel desen izlediğini keşfettiler. Bu model aşağıdaki gibidir:

  1. Tüm diller siyah (soğuk renkler) ve beyaz (parlak renkler) için terimler içerir.
  2. Bir dil üç terim içeriyorsa, kırmızı için bir terim içerir.
  3. Bir dil dört terim içeriyorsa, yeşil veya sarı için bir terim içerir (ancak her ikisini birden içermez).
  4. Bir dil beş terim içeriyorsa, hem yeşil hem de sarı için terimler içerir.
  5. Bir dil altı terim içeriyorsa, mavi için bir terim içerir.
  6. Bir dil yedi terim içeriyorsa, kahverengi için bir terim içerir.
  7. Bir dil sekiz veya daha fazla terim içeriyorsa, mor, pembe, turuncu veya gri için terimler içerir.

Bu nedenle Beowulf hikayesi sadece siyah, beyaz ve kırmızı renkleri içerir. Kutsal Kitabın mavi rengi içermemesinin nedeni de bu olabilir . Homeros'un Odyssey'i neredeyse 200 kez siyah ve yaklaşık 100 kez beyaz içerir. Kırmızı 15 kez, sarı ve yeşil ise sadece 10 kez görünür. ( Daha fazla bilgi burada )

Diller arasındaki farklılıklar da ilgi çekicidir: İngilizce ve Çince arasında kullanılan farklı renkteki kelimelerin bolluğuna dikkat edin. Ancak, bu dillerin derinliklerine inmek her birinin rengi farklı şekillerde kullandığını gösterir. ( Daha fazla bilgi )

Çince ve İngilizce renk adları.  "Muyueh.com" dan uyarlanan resim

Genel olarak, renklerin insan dillerinde adlandırılması, kullanılması ve gruplandırılması büyüleyici. Şimdi gösteriye geri dönelim.

8 bit (256) renk

Teknoloji gelişti ve aşağıda gösterildiği gibi önceden seçilmiş 256 renk tablosu kullanıma sunuldu.

ANSI kaçış dizileri için 256 bit renk modu

Bunları kullanarak, pembe metinleri şöyle yapabilirsiniz:

\033[38;5;206m     #That is, \033[38;5;<FG COLOR>m

Ve kullanarak sabahın erken saatlerinde mavi bir arka plan yapın

\033[48;5;57m      #That is, \033[48;5;<BG COLOR>m

Ve elbette, bunları birleştirebilirsiniz:

\033[38;5;206;48;5;57m

8 bit renkler şu şekilde düzenlenmiştir:

0x00-0x07:  standard colors (same as the 4-bit colours)
0x08-0x0F:  high intensity colors
0x10-0xE7:  6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)
0xE8-0xFF:  grayscale from black to white in 24 steps

TÜM RENKLER

Şimdi gelecekte yaşıyoruz ve tam RGB spektrumu şu şekilde kullanılabilir:

\033[38;2;<r>;<g>;<b>m     #Select RGB foreground color
\033[48;2;<r>;<g>;<b>m     #Select RGB background color

Böylece pembemsi bir metni kahverengimsi bir arka plan üzerine

\033[38;2;255;82;197;48;2;155;106;0mHello

"Gerçek renk" terminalleri için destek burada listelenmiştir .

Yukarıdakilerin çoğu Wikipedia sayfasındaki " ANSI kaçış kodu " ndan alınmıştır.

Kendine Hatırlatmak İçin Kullanışlı Bir Senaryo

Genellikle hangi renklerin ne olduğunu hatırlamaya çalıştığım için, şu adla kullanışlı bir komut dosyası var ~/bin/ansi_colours::

#!/usr/bin/python

print "\\033[XXm"

for i in range(30,37+1):
    print "\033[%dm%d\t\t\033[%dm%d" % (i,i,i+60,i+60);

print "\033[39m\\033[39m - Reset colour"
print "\\033[2K - Clear Line"
print "\\033[<L>;<C>H OR \\033[<L>;<C>f puts the cursor at line L and column C."
print "\\033[<N>A Move the cursor up N lines"
print "\\033[<N>B Move the cursor down N lines"
print "\\033[<N>C Move the cursor forward N columns"
print "\\033[<N>D Move the cursor backward N columns"
print "\\033[2J Clear the screen, move to (0,0)"
print "\\033[K Erase to end of line"
print "\\033[s Save cursor position"
print "\\033[u Restore cursor position"
print " "
print "\\033[4m  Underline on"
print "\\033[24m Underline off"
print "\\033[1m  Bold on"
print "\\033[21m Bold off"

Bu yazdırır

Basit ANSI renkleri


4
ANSI kaçış kodlarının tamamı: ascii-table.com/ansi-escape-sequences-vt-100.php
formixian

3
@giusti: Her iki echo -e "\033[38;05;34;1mHi"ve echo -e "\033[38;05;34m\033[1mHi"renk görünümü bu test ediyordum, terminal I kalınlaştırmak altında hafifçe değiştirmek için neden kenar yumuşatma font efektleri gerçi, benim için çalıştı.
Richard

4
SGR ( \033[38 ve 48 'ile başlayan) kodları gerektiğini , aksi saklıdır ayrılacak :bu primer kaynaklardan tam olarak net değildir, ancak bir alt-ayırıcı olarak: ecma-international.org/publications/files/ECMA-ST/Ecma -048.pdf ve itu.int/rec/… . Ayrıca bazı yorumlar, 2(16M renkli RGB) / 3(16M renkli CMY) / 4(??? CMYK) formlarındaki renk boşluğu ID'sini unutur - örneğin \033[38:2::255:255:255m, Beyaz 16M ön plan için olmalı ve değil \033[38:2:255:255:255m!
SlySven

2
Bu konuda devam etmemin nedeni, Mudlet I kodlu bir projenin her iki formu da ele alması gerektiğidir ve daha iyi çalışması için son zamanlarda dirseklerime
ulaştım

4
Sadece ANSI renklerin bir listesini bulmak istedim ve "temel renk terimleri" ile ilgili makaleleri okumakla çok fazla zaman harcadım. Büyük dikkat dağıtıcı için teşekkürler! :)
mzuther

14

Nasıl olur:

ECMA-48 - Kodlu Karakter Kümeleri için Kontrol İşlevleri, 5. baskı (Haziran 1991) - Renk kontrol kodlarını tanımlayan, görünüşte xterm tarafından da desteklenen bir standart.

SGR 38 ve 48 ilk olarak ECMA-48 tarafından ayrılmıştır, ancak birkaç yıl sonra birkaç parça halinde gelen ve (diğer birçok şey arasında) SGR'yi belgeleyen ortak bir ITU, IEC ve ISO standardında ete geçmiştir. Doğrudan renk ve dizinlenmiş renk için 38/48 kontrol sekansları :

ANSI çıkış kodları için Wikipedia sayfasında bu tabloda xterm için bir sütun var



4

Kesinlikle terminalinizle ilgili. VTE Eğer kullanırsanız, göz kırpma desteklemiyor gnome-terminal, tilda, guake, terminator, xfce4-terminalve bu yüzden VTE göre üzerine, Sen yanıp sönme yok edeceğiz.
VTE'de yanıp sönme kullanıyorsanız veya kullanmak istiyorsanız, kullanmanız gerekir xterm.
Terminal adı ile infocmp komutunu kullanabilirsiniz:

#infocmp vt100 
#infocmp xterm 
#infocmp vte 

Örneğin :

# infocmp vte
#   Reconstructed via infocmp from file: /usr/share/terminfo/v/vte
vte|VTE aka GNOME Terminal,
    am, bce, mir, msgr, xenl,
    colors#8, cols#80, it#8, lines#24, ncv#16, pairs#64,
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
    bel=^G, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[2J,
    cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
    cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
    cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
    cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
    dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
    el=\E[K, enacs=\E)0, home=\E[H, hpa=\E[%i%p1%dG, ht=^I,
    hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m,
    is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
    kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
    kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C,
    kb2=\E[E, kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB,
    kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kf1=\EOP,
    kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P,
    kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
    kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
    kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
    kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R,
    kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~,
    kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
    kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~,
    kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R, kf4=\EOS,
    kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
    kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
    kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
    kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
    kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
    kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
    kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
    kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
    kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khome=\EOH,
    kich1=\E[2~, kind=\E[1;2B, kmous=\E[M, knp=\E[6~,
    kpp=\E[5~, kri=\E[1;2A, kslt=\E[4~, meml=\El, memu=\Em,
    op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, ritm=\E[23m,
    rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
    rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, rs1=\Ec,
    rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
    sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
    sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p7%t;8%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e\017%;,
    sgr0=\E[0m\017, sitm=\E[3m, smacs=^N, smam=\E[?7h,
    smcup=\E7\E[?47h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
    smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
    u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,

VTE 0.52 / gnome-terminal 3.28, yanıp sönen metin için destek ekler (bu nedenle diğer VTE tabanlı emülatörlerde de çalışır).
egmont

1

Belirtilen diller dışında düzgün sonuçlar almayanlar için, konsol (terminal) penceresine bir metin yazdırmak için C # kullanıyorsanız "\ 033" yerine "\ x1b " yazmalısınız . Visual Basic'te Chrw (27) olurdu .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.