Evet. ANSI terminalleri ANSI Escape Kodlarını destekler . Her Control Sequence Introducer
( CSI
) Kod aşağıdaki formatta:
ESC[<<<CODE>>>
Ascii karakteri 27
( ESC
karakter) veya 1b
onaltılı, ardından bir sol köşeli ayraç ve sonra kullanılacak eylemi gösteren bir harf.
;
Ayrılmış parametrelerin bir listesinin doğrudan <<<CODE>>>
parametreden önce sağlanabileceğini unutmayın .
Şimdi, renkler bir CSI
kod alt kümesi, kodlar kullanır Select Graphic Rendition
. Bunlar formda:
ESC[<<<SGR>>>m
SGR
Kod, bir parametre olarak geçirilir CSI
. Sorunuzla ilgili SGR
30-49 kodları. Kodlar 30-39 ön plan rengini ayarlar. Kod 40-49, arka plan rengini ayarlar.
30 - Foreground Black
31 - Foreground Red
32 - Foreground Green
33 - Foreground Yellow
34 - Foreground Blue
35 - Foreground Magenta
36 - Foreground Cyan
37 - Foreground White
40 - Background Black
41 - Background Red
42 - Background Green
43 - Background Yellow
44 - Background Blue
45 - Background Magenta
46 - Background Cyan
47 - Background White
Kod 38 ve 48 özel kodlardır. Bunlar RGB değerlerini kullanmanıza izin verenlerdir. Bunlar için format:
ESC[38;2;<r>;<g>;<b>m (Foreground)
ESC[48;2;<r>;<g>;<b>m (Background)
Not: alternatif kullanımlar şunları içerir \x1b[<3 or 4>8;5;<web safe color index>m
. Bu kullanım ile tamamen farklı bir renk kodlaması var. Daha fazla bilgi için bu cevabın başındaki linke bakınız.
39 ve 49 kodları, ön ve arka plan renklerini, terminal bazında tanımlanmış olan varsayılan değerlerine ayarlar.
Uygulamada, renkler 30-37 40-47, etiketlerinin söylediklerinden biraz farklıdır.
0 - Black
1 - Darker Red
2 - Darker Green
3 - Dark/Yellow or Brown (varies between terminals)
4 - Dark Blue
5 - Dark Magenta
6 - Dark Cyan
7 - Light Grey
Açık renkler elde etmek için, SGI'yı kalın için kullanın 1
. Kalın, yanıltıcı bir addır. Yazı tipini kalın yapmaz. Aslında metnin parlaklığını arttırır. Kalın uygulanmış renkler olur:
0 - Dark Grey
1 - Bright Red
2 - Bright Green
3 - Bright Yellow
4 - Bright Blue
5 - Bright Magenta
6 - Bright Cyan
7 - White
Dikkat: son iki renk bloğu numaraları hem ön hem de arka planla ilgilidir ( <index> + (30 or 40)
).
Tüm stilleri kaldırmak için (varsayılan / normal moda geri dön) SGR
0 kullanın .
CSI
kodların hepsi grafik değildir. Örneğin, ESC[2J
terminalinizi temizleyecektir. ESC[<y>;<x>H
imleç konumunu ayarlar (1 indeksli). Daha fazla bilgi için wikipedia makalesine bakın.
Not: Bunları test etmek için echo -e
veya tuşlarını kullanın printf
.