Bunlar ANSI kaçış dizileridir ; Bu bağlantı renk kodlarının bir çizelgesine yöneliktir ancak Wikipedia sayfasında da başka ilginç şeyler var. Hepsi normal bir Linux konsolu üzerinde çalışmıyor (örneğin).
Bu yanlış:
\033]00m\] # white
0
terminali varsayılan ayarına sıfırlar (muhtemelen beyazdır). Beyaz ön plan için gerçek kod 37'dir. Ayrıca, ( \]
) ucundaki kaçış kapanış parantezi renk sırasının bir parçası değildir (istemi belirleme amaçlarının açıklanması için aşağıdaki son birkaç paragrafa bakın).
Bazı GUI terminallerinin özelleştirilmiş bir renk düzeni belirlemenize izin verdiğini unutmayın. Bu çıktıyı etkileyecektir.
Burada daha önce görmediğim 7 ön plan ve 7 arka plan rengi ekleyen bir liste var , ancak çalışıyor gibi görünüyorlar:
# Foreground colors
90 Dark gray
91 Light red
92 Light green
93 Light yellow
94 Light blue
95 Light magenta
96 Light cyan
# Background colors
100 Dark gray
101 Light red
102 Light green
103 Light yellow
104 Light blue
105 Light magenta
106 Light cyan
Ayrıca, 256 renkli bir GUI terminaliniz varsa (çoğunun şimdi olduğunu düşünüyorum), renkleri bu tablodan uygulayabilirsiniz:
Bunları seçmek için ANSI dizisi, sol alt köşedeki sayıyı kullanarak, 38;5;
ön plan ve 48;5;
arka plan için başlar , ardından renk numarası, örneğin:
echo -e "\\033[48;5;95;38;5;214mhello world\\033[0m"
Bana bronzlukta açık bir turuncu renk verir (yani, renk tablosunda aşağı yukarı yaklaşılır).
Bu tabloda renkleri görebilirsiniz 1 onlar oldukça kolay bir şekilde terminale göründüğü şekilde:
#!/bin/bash
color=16;
while [ $color -lt 245 ]; do
echo -e "$color: \\033[38;5;${color}mhello\\033[48;5;${color}mworld\\033[0m"
((color++));
done
Çıktı kendi kendini açıklayıcıdır.
Bazı sistemler, xterm-256color
içinde bazı kabuk kodları olan 256 renkli bir terminalde iseniz $ TERM değişkenini ayarlar /etc/profile
. Diğerlerinde, terminalinizi bunu kullanacak şekilde yapılandırabilmelisiniz. Bu, TUI uygulamalarının 256 renk olduğunu bilmesini ve size şöyle bir şey eklemenizi sağlar ~/.bashrc
:
if [[ "$TERM" =~ 256color ]]; then
PS1="MyCrazyPrompt..."
fi
Komut isteminizde renk kaçış dizileri kullandığınızda, bunları aşağıdaki gibi kaçık (önceden \
eklenmiş) köşeli parantez içine almanız gerektiğini unutmayın :
PS1="\[\033[01;32m\]MyPrompt: \[\033[0m\]"
Uyarı [
renk dizisine 'ın iç kurtuldu, ama çevreleyen olanlar değildir. İkincisinin amacı, kabuğa ekteki dizinin istemin karakter uzunluğuna saymadığını göstermektir. Bu sayı yanlışsa, geçmişe geri döndüğünüzde garip şeyler olur, örneğin, eğer çok uzunsa, son kaydırılan dizginin aşırı uzunluğu komut isteminize eklenmiş olarak görünür ve geri dönemezsiniz o (istemde olduğu gibi göz ardı edilir).
Ayrıca, komut isteminin her çalıştırılışında bir komutun çıktısını dahil etmek istiyorsanız (komut istemi ayarlandığında sadece bir kere olduğu gibi), onu tek tırnaklı bir hazır bilgi dizesi olarak ayarlamanız gerekir.
PS1='\[\033[01;32m\]$(date): \[\033[0m\]'
Bu harika bir örnek olmasa da, bash'ın özel \d
veya \D{format}
hızlı kaçışlarını kullanmaktan memnunsanız - bu konunun konusu değil ama man bash
altında bulunabilir PROMPTING
. \w
Geçerli dizin, \u
geçerli kullanıcı, vb. Gibi başka yararlı kaçışlar vardır .
1. Bu çizelgenin ana kısmı, 16 - 231 renkleri (sayısal sırada olmadıklarına dikkat edin), 6 x 6 x 6 RGB renk küpüdür. "Renkli küp", bir RGB renk uzayının üç boyutlu bir dizi (kırmızı için bir eksen, yeşil için bir ve mavi için bir tane) kullanılarak gösterilebileceği gerçeğini ifade eder. Buradaki küpteki her renk 6 x 6 x 6 dizisinde koordinat olarak temsil edilebilir ve grafikteki dizin bu şekilde hesaplanır:
16 + R * 36 + G * 6 + B
Küpteki ilk renk, grafikteki 16. indekste siyahtır (RGB 0, 0, 0). Bu formülü kabuk betiğinde kullanabilirsiniz:
#!/bin/sh
function RGBcolor {
echo "16 + $1 * 36 + $2 * 6 + $3" | bc
}
fg=$(RGBcolor 1 0 2) # Violet
bg=$(RGBcolor 5 3 0) # Bright orange.
echo -e "\\033[1;38;5;$fg;48;5;${bg}mviolet on tangerine\\033[0m"
\]
Buradaki finalin renk dizisinin bir parçası olmadığını unutmayın ; özel olarak bilgi istemlerinin belirlenmesinde bir amaca hizmet eder (bu konudaki cevabımın sonuna birkaç paragraf ekledim). "Ayrıca daha okunaklı bir form olsaydı iyi olurdu." -> kendi cevabınla kesme ve yapıştırma bunu yapmanın bir yoludur.