Nico Golde <nico/at/ngolde.de>
Yazar hakkında:
Nico henüz bir öğrenci. Birkaç yıldan beri Linux ile oldukça ilgilenmiş ve üstelik Open Source Project'de
almış olduğu görevler var.
Türkçe'ye çeviri:
Ceyhun Elmas <ceyhun.elmas(at)linuxfocus.org>
İçerik:
|
Renkli Kabuklar -- ANSI Renk Kodları Kullanımı
Özet:
ANSI destekli terminallerde (xterm, rxvt ya da konsol gibi ...) yazılar siyah/beyaz dışında farklı renklerde görünebilir.
Bu yazıda kalın ve renkli yazılar anlatılacak.
_________________ _________________ _________________
|
Genel
Gerçek hayatta her Linux kullanıcısı Bash ile yüzleşir. Genelde ilk izlenim bunun çok sıkıcı göründüğü yönündedir.
Aslında bunu değiştirmenin pek çok yolu bulunuyor. Örneğin renk özellikleri kazandırmak
bu sıkıcı görüntüyğ epeyce değiştirecektir.
Yazımda Bash kabuğunu kullandım. Çıkış özellikleri terminallere göre farklı özellikler gösterebilir, bu
yazıda ANSI terminal kullandım.
Kabuk yapılandırması
Renk yapılandırmaları kişisel yapılandırma dosyası olan
~/.bashrc ya da genel yapılandırma dosyası olan /etc/bashrc'de yapılır.
Prompt görünümü bashrc içindeki PS1 değişkeniyle yapılır.
Genellikle giriş şu şekilde olmalıdır:
~/.bashrc: PS1="\s-\v\$ "
\s kabuk için bulunulan yer ve -\v sürüm içindir. İmlecin sonuna $ koyuyoruz.
Bu eğer sıkıcı gelirse (Linux dağıtımlarının çoğunda bu benimsenmiş değerdir) aşağıdaki gösterim de kullanılabilir :
~/.bashrc: PS1="\u@\h \w \$ "
|
Böylece Linux imleclerinin çoğunda olduğu gibi böyle görünür :
user@ current_directory $
Kaçış Dizileri
Renkli imlece kişisel özellikler eklemek için kaçış dizileri kullanıyoruz.
İmlece renkle kendi istediğiniz biçimi vermek için kaçış dizileri kullanıyoruz.
kaçış dizisi kabuğu özelleştiren bir denetim yönergesidir
Bir kaçış dizisi genellikle ESC (adı üzerinde) ile başlar.
Kabukta bu böyledir : ^[ . Bu biraz alışkanlıktan gelir, \033 de aynı etkiyi gösterir (ESC ascii 27 desimal = 33 oktal).
Kabukta bir kaçış dizisine girmek için ctrl-v yapmalıyız :
CTRL-v ESC.
Kabuğun renklerini kullanmak
Bir imlec örneğiyle kabuğun renklerini kullanmayı anlatacağım .
~/.bashrc: PS1="\[\033[0;32;40m\u@\h:\w\$ \]"
Bu görüntüde tüm imlec yeşil renkte :
\033 [ ile kaçış dizisini başlatır ve renk tanımlamasına başlıyoruz.
Takip eden 0 font genişliğinin benimsenmiş değeridir.
Burada diğer olanaklara daha sonra değineceğim.
Katar
\[ and \] görüntülenen kaçış dizisi yazısının önüne geçecek ve çok fazla yer alacak.
Sonra önplan rengi seçiyoruz (bu durumda yeşil 32).
Arkaplan rengi siyah 40.
İmlecden sonra başlayan yazı yeşil oluyor. Kaçış dizisini benimsenmiş değerde yani \033[0m ile kapatıyoruz.
Önplan için arkaplan gib 8 renk bulunuyor.
Seçenekler: kırmızı, yeşil, mavi, morciver, turkuaz ve beyaz.
Burada renk kodları 30 (siyah), 31 (kırmızı), 32(yeşil), 33(sarı), 34 (mavi), 35(morciver), 36 (turkuaz),
Arkaplan renklerinde de aynı yolu izliyoruz fakat ilk sayı olarak 4 kullanıyoruz ;
40, 41, 42, 43, 44, 45, 46, 47 gibi.
Örnek:
~/.bashrc: PS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"
Bu bize çok renkli bir imlec verir:
Bu yapılandırmayı test etmek için
export PS1="string" kullanıyoruz, sonra yapılandırmayı
.bashrc içine alabiliriz. Şu anki imlec böyle görünüyor :
PS1="\[\033[1;34;40m[\033[1;31;40m\u@\h:\w\033[1;34;40m]\033[1;37;40m $\033[0;37;0m\] "
Yazı Özellikleri
Yukarıda dediğimiz gibi kaçış dizisinden sonraki '0' imlecdeki yazı için benimsenmiş değerdir.
Yazı özellikleri için bu değerler anlamlıdır :
0, 1, 22, 4, 24, 5, 25, 7, 27 bu anlamlarla :
benimsenmiş, kalın, kalın değil, altı çizili, altı çizilideğil,
yanıp sönen-sönmeyen, ters sıralı-sırasız.
Aşağıdaki kısa betik yardımıyla renk kombinasyonlarına bakabiliriz.
#!/bin/sh
############################################################
# Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de
# Last change: Mon Feb 16 16:24:41 CET 2004
############################################################
for attr in 0 1 4 5 7 ; do
echo "----------------------------------------------------------------"
printf "ESC[%s;Foreground;Background - \n" $attr
for fore in 30 31 32 33 34 35 36 37; do
for back in 40 41 42 43 44 45 46 47; do
printf '\033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back
done
printf '\n'
done
printf '\033[0m'
done
Betik tar.gz olarak buradan yüklenebilir:
showansicol.tar.gz
Diğer Uygulama
Bu farklı renkler kullanabilme yetisi yalnızca renkli görüntüler elde etmek için değil aynı zamanda
konsolda program yazmada çok kullanılışlıdır.
Renklerin her kullanılışı
slang ya da ncurses gibi bir kitaplık kullanır. Bu durum ikilitaban dosyasının şişmesine neden olabilir.
Ncurses terminal tipine daha az bağlı olmasıyla bir avantaja sahiptir.
C ile bir örnek
Yeşil yazılı bir 'Hello World' :
#include <stdio.h>
int main(void){
const char *const green = "\033[0;40;32m";
const char *const normal = "\033[0m";
printf("%sHello World%s\n", green, normal);
return 0;
}
Bir diğer kullanışlı kaçış dizisi printf("\033[2J")'dir.
Bu system(clear) ile aynı etkiye sahiptir fakat unistd.h başlık dosyasından vazgeçilebilir.
printf("\033[1K") ile satırı silebiliriz.
Örnek bir ilklendirme betiği
Eğer /etc/init.d'nin init betiklerinin başlamasında basit bir '.' yerine renkli bir doğrulama elde etmek istersek,
yine kaçış dizisi kullanabiliriz.
Burada bir cron init script'den bir görüntü yeralıyor:
#!/bin/sh
# Start/stop the cron daemon.
test -f /usr/sbin/cron || exit 0
case "$1" in
start) echo -n "Starting periodic command scheduler: cron"
start-stop-daemon --start --quiet --exec /usr/sbin/cron
echo "."
;;
cron'nun başarıyla başlatılması bir periyodla gösterilecek. Renk özelliği echo 'nun değiştirilmesiyle
[Ok]'ye verilebilir :
#!/bin/sh
# Start/stop the cron daemon.
test -f /usr/sbin/cron || exit 0
case "$1" in
start) echo -n "Starting periodic command scheduler: cron"
start-stop-daemon --start --quiet --exec /usr/sbin/cron
echo "\[ \033[1;34;40m[ \033[1;32;40mOk \033[1;34;40m]\033[0m\]"
;;
Bazı sistemlerde \033 bir "kaçış dizisi" olarak yorumlanmayabilir. Bu durumda Ctrl-v kullanılmalıdır.
Bununla birlkte bu yapılandırmanın tüm betiklere uygulanması zaman alıcı olabilir.
Geribildirim
Geribildirim, görüş ve hatalar için lütfen "nico at ngolde.de" adresine ileti gönderin. İyi eğlenceler ...
Bu yazı için görüş bildiriminde bulunabilirsiniz
Her yazı kendi görüş bildirim sayfasına sahiptir. Bu sayfaya yorumlarınızı yazabilir ve diğer okuyucuların yorumlarına bakabilirsiniz.
<--, Bu sayının ana sayfasına gider
2004-05-07, generated by lfparser version 2.46