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

Duyumlar | Belgelikler | Baðlantýlar | LF Nedir
[an error occurred while processing this directive]
[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