[LinuxFocus-icon]
<--  | Ana Sayfa  | Erişimdüzeni  | İçindekiler  | Arama

Duyumlar | Belgelikler | Bağlantılar | LF Nedir
Bu makalenin farklı dillerde bulunduğu adresler: English  ChineseGB  Deutsch  Francais  Nederlands  Russian  Turkce  Polish  

[Photo of the Author]
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ı

ansi colors

Ö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 :
nico@ebrain:~$

\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:
nico@ ebrain: ~$

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\] "

[ nico@ebrain:~ ]
 

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.
 talkback page 

<--, Bu sayının ana sayfasına gider

Görselyöre sayfalarının bakımı, LinuxFocus Editörleri tarafından yapılmaktadır
© Nico Golde, FDL
LinuxFocus.org
Çeviri bilgisi:
de --> -- : Nico Golde <nico/at/ngolde.de>
de --> en: Jürgen Pohl <sept.sapins(at)verizon.net>
en --> tr: Ceyhun Elmas <ceyhun.elmas(at)linuxfocus.org>

2004-05-07, generated by lfparser version 2.46