taraf�ndan Katja and Guido Socher <katja(at)linuxfocusorg, guido(at)linuxfocus.org>
About the authors:
Katja LinuxFocus'un Almanca k�sm�n�n edit�r�d�r. Tux'dan, film ve
foto�raflardan ve denizden ho�lan�r. Katya'n�n ki�isel sayfas�na
buradan
ula�abilirsiniz. Guido uzun zamand�r bir Linux hayran�d�r ��nk� d�r�st insanlar
taraf�ndan tasarland� ve herkese a��k. Bu, a��k kaynak dememizin
nedenlerinden birisidir. Guido'nun g�rsely�re sayfas�na
linuxfocus.org/~guido.
T�rk�e'ye �eviri:
Erdal Mutlu <erdal(at)linuxfocus.org>
��erik:
|
(X)dialog: Konu�an kabuklar
�zet:
Xdialog ve dialog, kabuk programlar�n�z� grafik aray�zler ile
geli�tiren klasikle�mi� iki ara�t�r.
Yaz�y� anlayabilmek i�in biraz kabuk programlama bilgisine
gereksiniminiz olacakt�r. Kabuk programlaman�n temmelleri hakk�nda
biraz daha fazla ��renmek i�in Kabuk Programla
yaz�s�n� okuyabilirsiniz.
_________________ _________________ _________________
Giri�
UNIX kabuk ortam� tek ba��na bile olduk�a �retken bir ortamd�r ve
grafik aray�zler olmadan da �ok g�zel �al��maktad�r.
Ancak baz� durumlarda, kullan�c� ile ileti�imde bulunmak i�in grafik
aray�zler �nem kazanmaktad�r. S�zgelimi, bir program� y�klemek i�in
kullan�c�n�n, y�klenecek dizin, �e�itli se�eneklerden se�im yapmas�
gibi baz� se�imler yapmas� gerekebilir ve bunlar i�in bir y�kleme
aray�z� kullan�labilir.
(X)dialog...
Xdialog ve dialog kullanarak, grafik aray�zlerinizi k�sa kabuk
programlar yazarak tasarlayabilirsiniz. Dialog, terminal (metin ortam�),
Xdialog ise, X11 pencere sistemi tabanl� programd�r.
��te bir �rnek:
A�a��daki sat�rlar� kobuk penceresi ortam�na (xterm, konsole ...) veya bir kabuk program�
dosyas�na yazabilirsiniz:
bash
Xdialog --yesno "Do you want to learn more about Xdialog?" 0 0;\
case $? in
0)
echo "Result: Yes chosen.";;
1)
echo "Result: No chosen.";;
255)
echo "ESC pressed.";;
esac
Olu�an kutu, a�a��daki gibi g�z�kecektir:
Xdialog yerine dialog kullanmak isterseniz, ikinci sat�rdaki X
karakterini kald�rman�z yeterlidir. Buna g�re xterm penceresinin
i�inde, ba�ka bir pencere a�madan �al��an,
curses tabanl� bir uygulama elde etmi� olursunuz.
Baz� durumlarda kabuk programlar� i�in dialog kullanmak daha elveri�li
olabilir, ��nk� kabuk programlar� terminal ortam�nda �al��maktad�r.
�zellikle de, do�rudan IP y�nlendirilmesi (routing) olmayan ve
birka� bilgisayar uzakta bulunan bir bilgisayarda program� �al��t�rmak
daha uygun olmaktad�r. Bu durumda dialog ile yaz�lm�� program
�al��acakt�r, ancak bir X11 uygulamas� olan Xdialog program�n�
�al�l�mayacakt�r.
Yukar�daki dialog/Xdialog kullanan program olduk�a
kullan��s�zd�r, ancak �ok basit bir grafik program�n nas�l kolay
bir �ekilde yaz�labilece�ini g�stermesi a��s�ndan g�zel bir �rnektir.
Takvim, men�, dosya y�neticisi, geli�im �ubu�u (progres bar), yaz�
giri�i, mesaj, ge�i�s�zc��� vs. gibi �ok ilgin� dialog kutular
vard�r.
dialog --help
veya
Xdialog --help
komutunu �al��t�rarak, varolan dialog kutular�n�n listesini elde
edebilirsiniz. Xdialog'un dialog'a g�re biraz daha fazla se�ene�e
sahiptir.
Nas�l �al���yor?
Dialog kutular� komut sat�r�ndan yap�land�r�lmaktad�r.
dialog --yesno "text string" <height>
<width>
Xdialog veya dialog yazd�ktan sonra, kullanmak istedi�iniz kutunun
ad�n� ve ard�ndan ona uygun parametrelerini yazman�z gerekmektedir.
yesno kutusu 3 parametre almaktad�r.
<height> ve <width> parametrelerine s�f�r verebilirsiniz.
Bu durumda, kutunun geometrisi otomatik olarak, yaz�n�n b�y�kl���ne
g�re ayarlanacakt�r. Se�imden elde edilen sonu� ��k�� de�eri olarak
verilmektedir ve kabuk i�eri�inden "$?" de�i�keni arac�l��� ile
elde edilebilir. Se�ilen isimler gibi birdan fazla geri g�nderilmesi
gereken de�er varsa, gerid�n�� de�erleri standart hata ayg�na
yaz�lmaktad�r. Standart hata ayg�t�na yaz�lanlar genellikle ekrana
yaz�lmaktad�r. Ancak, "2>" y�nlendirilmesi kullan�labilir.
�ok basit ve bir o kadar da kullan��l� bir ��z�md�r.
Ger�ek uygulamalar
�imdi, Xdialog/dialog'un normal kabuk programlar�na g�re
nas�l �st�nl�k sa�lad���n� g�steren ger�ek bir uygulama yazal�m.
Yazaca��m�z program, bir men�den �e�itli �sternet Servis
Sa�lay�c�lar�n� se�en ve ba�lant� sa�layan bir program olacakt�r.
Bu program Mart 2001'de yay�nlanan
�nternet eri�iminiz i�in
farkl� ISS'lerin kullan�m�
yaz�s�ndaki ppp-on/ppp-off betiklerine gereksinim duymaktad�r.
Kabuk program�n�n ad�
pppdialout
d�r ve ba�l� olup olmaman�za g�re farkl� men�ler g�r�nt�lemektedir.
#!/bin/sh
#
#DIALOG=Xdialog
DIALOG=dialog
#
# name of your default isp:
defaultisp=maxnet
#
error()
{
echo "$1"
exit 2
}
help()
{
cat <<HELP
pppdialout -- select an ISP and dial out.
All available ISPs must have a config file in /etc/ppp/peers
pppdialout executes the ppp-on/ppp-off scripts as described
in http://linuxfocus.org/English/March2001/article192.shtml
pppdialout, copyright gpl, http://linuxfocus.org/English/November2002
HELP
exit 0
}
# parse command line:
while [ -n "$1" ]; do
case $1 in
-h) help;shift 1;; # function help is called
--) shift;break;; # end of options
-*) echo "error: no such option $1. -h for help";exit 1;;
*) break;;
esac
done
tempfile=/tmp/pppdialout.$$
trap "rm -f $tempfile" 1 2 5 15
# check if we have a ppp network interface
if /sbin/ifconfig | grep '^ppp' > /dev/null; then
# we are already online
$DIALOG --title "go offline" --yesno "Click YES to \
terminate the ppp connection" 0 0
rval="$?"
clear
if [ "$rval" = "0" ]; then
echo "running /etc/ppp/scripts/ppp-off ..."
/etc/ppp/scripts/ppp-off
fi
else
# no ppp connection found, go online
# get the names of all available ISP by listing /etc/ppp/peers
for f in `ls /etc/ppp/peers`; do
if [ -f "/etc/ppp/peers/$f" ]; then
isplist="$isplist $f =="
fi
done
[ -z "$isplist" ]&&error "No isp def found in /etc/ppp/peers"
#
$DIALOG --default-item "$defaultisp" --title "pppdialout" \
--menu "Please select one of\
the following ISPs for dialout" 0 0 0 $isplist 2> $tempfile
rval="$?" # return status, isp name will be in $tempfile
clear
if [ "$rval" = "0" ]; then
isp=`cat $tempfile`
echo "running /etc/ppp/scripts/ppp-on $isp..."
/etc/ppp/scripts/ppp-on "$isp"
else
echo "Cancel..."
fi
rm -f $tempfile
fi
# end of pppdialout
Betik nas�l �al��maktad�r?
�lk olarak error ve help gibi baz� fonksiyonlar tan�ml�yoruz. Daha
sonra komut sat�r�ndan verilen parametreler denetlenmekte ve ge�ici
bir dosya (/tmp/pppdialout.$$) i�in isim tan�mlanmaktad�r. $$
�al��makta olan s�recin (program�n) s�re� numaras�d�r ve her
bilgisayarda bu numara tekil olarak belirlenmektedir.
Program anormal olarak kesildi�inde, s�zge�imi crtl-C tu�lar�na
basarak, trap ile belirtilen k�s�m �al��t�r�lmaktad�r. Bizim
�rne�imizde ge�ici dosya burada silinmektedir. Daha sonra
ba�l� olup olmad���m�z� denetlemekteyiz (/sbin/ifconfig | grep
'^ppp'). E�er, ba�l� isek, yukar�da da g�rd���n�z gibi bir yesno
kutusu ekrana gelmektedir ve kullan�c�ya ba�lant�y� kesmek isteyip
istemedi�i sorulmaktad�r. E�er, hen�z ba�l� de�ilsek, bir men� kutusu
ekrana getirilmektedir. Varolan t�m �SS'c�lar�n�n isimlerini
/etc/ppp/peers dosyas�na bakarak elde etmekteyiz. Men� kutusunun
yaz�l�� bi�imi:
dialog --menu "text" <height>
<width> <menu height> <tag1>
<description> ...
d�r. <height>, <width> ve <menu height>
de�erleri s�f�r olarak verilmistir (Yani boyutlar otomatik olarak
ayarlanmaktad�r. Yukar�ya bak�n�z.). Daha sonra programa (<tag1>
<description>) �iftlerini yazmak gereklidir. Bizim program i�in
a��klamaya (description) gerek yoktur, o y�zden herhangibir �ey yazmak
m�mk�nd�r (Biz == yazd�k.) isplist de�i�kenindeki veri a�a��daki gibi
olacakt�r:
isp1 == isp2 == isp3 ==
Kullan�c�n�n se�imi (X)dialog taraf�ndan standart hata ayg�t�na
yaz�lacakt�r. "2> $tmpfile" komutu, bunu tmpfile dosyam�za
y�nlendirmi� olacakt�r. Men� kutusu ayr�ca cancel (iptal) tu�una
basma olas�l��� sunmaktad�r. Dolay�s�yla, hangi tu�a bas�ld���n� ��renmek
i�in $? (��k�� durum bilgisi) de�erine bakmam�z gerekmektedir.
Bu kadar teori yeter. ��te program�n g�r�n���
... Xdialog ile GTK GUI:
... terminalde curses tabanl� dialog ile:
Daha fazla uygulamalar
Size bir uygulamam�z daha var. Ad� mktgz dir ve
Xdialog'un checklist (se�im listesi) kutusunu kullanmaktad�r. Terminalde
�al��an dialog program�n�n checklist yoktur. Dolay�s�yla, program
sadece Xdialog ile �al��maktad�r. mktgz program�n� tar.gz paketleri
olu�trmak i�in kullanabilirisniz.
mktgz yourpackage .
Bu komut bulundu�unuz (".") dizindeki t�m dosylar� g�r�nt�lemektedir
ve bunlar�n aras�ndan hangilerini yourpackage.tar.gz paketine almak
istiyorsan�z, onlar� se�meniz m�mk�n. Program�
buradan (mktgz.txt)
elde etmeniz m�mk�nd�r. Program� sat�r sat�r anlatmayaca��z, ��nk�
art�k onu anlayacak kadar ��renmi� olmal�s�n�z.
Xdialog ve dialog programlar� "samples" ad�nda �rnek programlar�n
bulundu�u dizinle birlikte gelmektedir. Burada daha fazla
�rnek bulabilirsiniz (RedHat 7.3'te bu dizin
/usr/share/doc/Xdialog-2.0.5/samples d�r.).
Ancak, bunlar� kullan�rken dikkatli olun, ��nk� bunlar�n baz�lar�
ger�ekten bir�eyler yapmaktad�r ve s�rf g�steri� (demo) uygulamalar�
de�ildir.
Sonu�
Xdialog ve dialog bir�ok farkl� dialog kutular� sunmaktad�r.
Hert�r kabuk beti�inde bunlar�n hepsi kullan�ma uygun de�ildir.
Kabu�un kendisi zaten �ok "g��l�" bir ortamd�r. Yoltan�m�n� tab'lar
ile tamamlamak, GUI (Grafik Uygulama Aray�z�) den se�mekten daha
h�zl�d�r. �zellikle kabu�un boru (pipe) �zelli�ini kullanarak, bir
komutun ��kt�s�n� ba�ka komutu girdisi olarak verebilme �zelli�i �ok
g��l� bir ara�t�r. Yani ��yle bir�ey:
grep -i "somestring" file.txt | sort | uniq | wc -l
(UNIX kabuklar� ile tecr�besi olmayanlar i�in a��klama:
Bu komutlar file.txt dosyas�ndaki "somestring" i i�eren
t�m tekil sat�rlar� saymaktad�r.
Bu �ekilde borulama kullanabilmek, t�m komutlar�n komut st�r�ndan
verilen parametreler ile denetlenmesinden dolay� m�mk�n olmakatd�r.
Ba�ka bir deyi�le, bu komutlar durup, kullan�c�dan nas�l devam etmeleri
gerekti�ine ili�kin sorular sormamaktad�r.
Ancak, grafik aray�zl� uygulamalar�n�n daha fazla kullan��l� oldu�u
durumlar da vard�r. Xdialog ve dialog'un kullan�m� olduk�a basittir,
ancak bunlar ger�ek grafik aray�zl� uygulamalar kadar g��l�
de�ildir. Bunlar, sadece ASCII olan uygulamalar ile grafik aray�zl�
uygulamalar aras�ndaki a���� kapatmaktad�r.
Xdialog ve dialog nereden elde edilebilir?
Xdialog ve dialog programlar�n� bulmak i�in ilk bakaca��n�z yer,
kulland���n�z Linux da��t�m�n�n CD'leri olmal�d�r. Belkide
sizteminizde y�kl� bile olabilirler (Bilgisayar�n�za sorun: rpm -qil
Xdialog, dpkg -L Xdialog). Xdialog sanaldoku y�resi
http://www.chez.com/godefroy/
dir. dialog'un sanaldoku y�resi
http://hightek.org/dialog/
dir. Dolay�s�yla dialog/Xdialog programlar�n� buralardan da elde
edebilirisiniz.
Referanslar
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.
2003-03-05, generated by lfparser version 2.31