Professional Documents
Culture Documents
KabukProgramlama PDF
KabukProgramlama PDF
Halil Yurdugül 1
yurdugul@hacettepe.edu.tr
Kabuk Programlama..!
Unix’ te dosya ve
dizin komutlar
Unix’te Önemli
Komutlar
Kabuk Programlama
While-Do-Done
For-Do-Done
Dr. Halil Yurdugül 2
yurdugul@hacettepe.edu.tr
letim sistemi, bilgisayar donan m (hardware) ile kullan c (user) aras ndaki arayüzü
olu turmaktad r. letim sisteminin temel amac ; bilgisayar kaynaklar n ve donan m n
etkili bir ekilde kullanmakt r. Bir di!er amac ise; bilgisayar kullan ma uygun hale
getirmektir.
Ölçütlerin bir di!eri ise; kullan c ve i lem say s na göre gösterdi!i de!i ikliktir. Baz
i letim sistemleri tek kullan c l (single-user) ve tek i lemli (single-tasking) iken
baz lar ise çok kullan c l (multi-user) ve çok i lemli (multi-tasking)'dir.
Unix i letim sistemi çok kullan c l ve çok i lemli bir sistemdir. Bu durumda, birden
fazla kullan c birbirinden ba! ms z olarak ve ayn anda bilgisayar kullanabilme
yetisine sahiptir.
Unix'in Tarihi
Unix i letim sisteminin ilk ad mlar MULTICS (Multiplexed Operating and Computing
System) ad verilen bir projede at lm t r. MULTICS projesi, 1960'lar n ortalar nda
General Elektrikc, Massachusetts Teknoloji Enstitüsü ve Bell Laboratuarlar i birli!i ile
ba lad . 1969'da Bell Laboratuarlar bu projeden çekildi.
Bell Laboratuarlar n temsil edenlerden birisi de Ken Thompson idi. Ken Thompson
MULTICS projesinde çal anlardan biriydi, 1969'da MULTICS yap s n n daha basit ve
i levsel versiyonu olan Unix'in ilk versiyonu UNICS'i (Uniplexed Operating and
Computing System) tasarlad . Daha sonra bu isim k salt larak Unix olmu tur.
Ken Thompson daha sonra unix ekibine ilk C derleyicisini yazan Dennis Ritchie'i
alm t r. Böylece 1973'te C'de Unix'in kernel k sm tekrar yaz lm t r. Takip eden
y llarda, be inci versiyonu üniversitelere lisansl olarak verilmi tir. 1978'de yedinci
versiyonu, Unix'in geli imini 2 farkl çizgiye ay rd . Bunlar SVR4 (System V Revision 4)
ve BSD olarak bilinen iki ayr dald r.
Distribution) olarak bilinir. Unix'in bugün kullan lan bir çok özelli!i BSD 'den
gelmektedir. Bunlar n baz lar ; vi editörü, C shell, virtual memory, sendmail ve TCP/IP
deste!i.
SVR4 ise ticari bir nitelik ta maktad r. SVR4 ile BDS aras nda görünü te büyük
benzerlikler vard r.
UNIX'in Yap s
Bir i letim sistemi denilince akla gelenler s ras yla; çekirdek (kernel), kabuk (shell) ve
komutlard r.
Kabuk (Shell):
Bilgisayar aç ld ktan bir süre sonra komut sat r (prompt) görüntülenir. Kullan c
taraf ndan komut sat r na girilen komutlar bilgisayar taraf ndan i leme konulur. te bu
nokta da kabuk (shell) olarak adland r lan yaz l m devreye girer. Öncelikle komutun
geçerlili!ini inceler, kullan c n n ne yapmak istedi!ini çözümler ve bu i için gerekli
olan programlar belle!e yükler.
Çekirdek (Kernel):
Çekirdek, bilgisayar n donan m yla do!rudan etkile en i letim sisteminin bir parças d r.
Programlar taraf ndan kullan lan bir hizmet sa!lar. En önemli fonksiyonlar :
• Belle!i yönetmek
• Bilgisayara ula mlar kontrol etmek
• Dosya sistemini olu turup, korumak
• nterruptlar kullanmak
• Hatalar kontrol etmek
• Girdi-ç kt birimlerini çal t rmak
• Bilgisayar n kaynaklar n (i lemci, girdi-ç kt birimleri gibi...) kullan c lar aras nda
da! tmak.
Unix ve DOS'ta dosya ve dizin yap s hiyerar iktir. Ayn zamanda hiyerar inin en
tepesinde kök dizin (root directory) vard r. Ancak Unix ile Dos aras ndaki farklardan
birisi DOS'ta dizinler \ (ters slash), Unix'te ise / ile ifade edilir. Ancak her ikisi
aras ndaki en büyük farkl l k, Unix'teki kullan c dizini (home directory)'dir. Kullan c
Unix i letim sistemine sahip bir sisteme girdi!inde (login) kendisine ayr lm kullan c
dizinine ula r. Unix'te en özel dizin kök dizindir. O dizine yaln zca süper kullan c
(super user) olarak bilinen sistem yöneticisi kullanabilir.
/root
|
--------------------------------------------------------------------------
| | | | | | | |
/bin /dev /etc /home /lib /tmp /usr kernel file
---------------
| |
user1 user2
*************************************
Sisteme girmek
Login
Herbir kullan c y betimlemek için, kullan c ad (id) ve ifresi kullan l r. Dolay s yla
sisteme dahil olabilmek ve size ayr lm kullan c dizine (home directory) ula abilmek
için geçerli bir id ve ifre girmeniz gerekmektedir. Sistem ile ilk ba!lant kuruldu!unda
öncelikle:
Login:
ve ifre:
Password:
bilgilerini girmeniz gerekmektedir. Bu bilgiler üniversitemiz taraf ndan sizlere verilmi
olan kullan c ad ve ifrelerdir.
Dr. Halil Yurdugül 6
yurdugul@hacettepe.edu.tr
******************************
Sisteme girdikten sonra kullan c dizinine ve komut sat r na (prompt) ula lacakt r.
S ras ile u i lemleri yapal m.
• Hangi dizinde oldu!unuzu ö!renmek.
• Bulundu!umuz dizinde hangi dosyalar var?.
• Sistemde kimler var?
• Ben kimim?
Hangi dizinde oldu!unuzu ö!renmek için: pwd (print working directory) komutu
kullan l r.
Ben kimim?
whoami komutu ile sizin kim oldu!unuzu (user id) ö!renebilirsiniz.
Dosyalar kopyalama
cp (copy)
Dosya Silme
rm (remove) Silinecek Dosyalar
Dizin yaratma
mkdir (make directory)
mkdir subdir geçerli olan dizin içerisine bir alt dizin açar
Dizin silme
rmdir (remove directory)
Komutlar n yan s ra komut sat r ndan meta-karakterler de kullan l r. Komut sat r nda
kullan lmak üzere kullan lan baz meta-karakterler a a! da verilmi tir.
Komut sat r ndan ls -l komutu verildi!inde dosya ve dizinlere ili kin eri im haklar n
görüntülenir. A a! da görüldü!ü gibi unix’te dosya ve dizinlerin 10 karakterden olu an
nitelik tan mlamas vard r.
Unix’in çok kullan c l olmas ndan kaynakl olarak kullan c lar n, dizinler ve dosyalar
kullanmaya yönelik olarak çe itli eri im yetkileri vard r. Bu yetkileri dosya ve dizin
sahipleri (user) de!i tirebilir.
Unix'te yetki atamalar chmod seçenekler dosya (dizin)_ad komutu ile gerçekle tirilir.
Ancak bu yetki atamalar iki yöntemle yap lmaktad r.
1-Say sal yöntem, 2-sembolik yöntem.
Say sal atamalarda, 3 haneli bir say üzerinden gerekli yetkiler da! t labilir.
Herbir hane s ras ile dosya(dizin sahibi)/grup/kullan c lara ili kin yetkileri
belirtmektedir.
Bu say n n rakamlar r(read)=4, w(write)=2, x(execute)=1 yetki de!erlerinin
bile enlerinin toplam ndan olu ur.
lk rakam 7'dir.
* Yani dosya (dizin) sahibi (r=4)+(w=2)+(x=1)=7 yetkisine sahiptir. Di!er bir ifade
ile, dosya ya da dizin için tüm yetkilere (okuma, yazma ve çal t rma) sahiptir.
* Ayn ekilde grup üyeleri (r=4)+(w=0)+(x=1)=5 yetkisine sahiptir. Bir di!er ifade
ile yaln zca yazma (w=0) yetkisine sahip de!ildir.
Sembolik Yöntem
Bu yöntem say sal yöntemden oldukça farkl d r. A a! daki chmod (change mod)
komutunun sembolik yöntemle kullan m görülmektedir.
chmod u+r deneme.html dosya sahibine (u), okuma (r) hakk verir.
chmod go-x deneme.html grup ve di!er kullan c lar n dosyay çal t rma yetkisini
k s tlar.
chmod a+rwx deneme.html herkese bütün yetkileri verir.
+ : yetki ekleme
- : yetki ç karma
Eri im yetkileri özellikle internet ortam nda yayg nca kullan lmaktad r. Örne!in bir web
sayfas na ula lmaya çal ld ! nda “Bu sayfay görüntülemek için yetkiniz yok” uyar s
ile çok s k kar la l r. Örne!in index.html dosyas n n yetkilerini 700 olarak olarak
belirledi!inizde http protokolünü kullanan hiç kimse (dosya sahibi de dahil olmak
üzere) bu web sitesini görüntüleyemeyektir.
grep –i b9843000 liste* liste ile ba layan dosyalarda b9843000 kelimesini arar
Zaman Ö3renmek
time
Tarihi Ö3renmek
date
Talk Komutu:
Sistemdeki birisi ile bire-bir mesajla mak istedi!inizde
$ talk UserName
Komut sonras nda kar daki ki inin bilgisayar nda bu talep görüntülenecektir.
Ancak kar daki ki i (komutta belirtilen UserName) de sizin UserName’iniz ile
a a! daki komutu girer ise görü me ba lar.
$ talk UserName
Ctrl+C ile mesajla ma son bulur.
Write Komutu:
E!er kar daki kullan c ya yaln zca mesaj gönderilecek ise bu durumda write
komutu kullan l r.
$ write UserName
Bu komuttan sonra prompt kaybolur ve editöre dönü ür. Kullan m cat
komutunda oldu!u gibidir. Gerekli mesaj yaz l r ve mesaj sonunda Ctrl+D girilirse
mesaj kar tarafa gönderilir. (Kar daki kullan c bir önceki komutta oldu!u gibi $
mesg n girmemi se, gönderilen mesaj an nda ekrarn nda görüntülenir).
Mail Komutu:
Bir üçüncü mesajla ma yöntemi mail komutu ile gerçekle ebilir.
$ mail UserName
Dr. Halil Yurdugül 12
yurdugul@hacettepe.edu.tr
Bu komut, mail adl bir program ba latacakt r. Subject ve mesaj k sm n
girdikten sonra Ctrl+D ile mesaj gönderilir. Kar tarafa mail ula t ! nda ise kar
ekranda “You have new mail” ifadesi görütülenir. Kar daki ki i $ mail komutu ile
gelen mailleri okuyabilir.
Finger Komutu:
Bir ba ka ki iye ili kin bilgileri ö!renmek istedi!inizde
$ finger UserName
Ara t r lan ki inin gerçek ad n , home directory’sini, sistemde olup olmad ! n ve
maillerine en son ne zaman bakt ! vb bilgilere ula abilirsiniz.
Ping Komutu:
Herhangi bir ki inin o esnada sistemde olup olmad ! n ö!renebilmek için
kullan lan komuttur.
$ ping UserName
E!er ara t r lan kullan c aktif ise “alive” yan t al n r.
$ compress Dosya_Ad
Dosya ad belirtilen dosyay s k t r r. Belirtilen dosyan n yeni ad Dosya_Ad .Z’dir.
$ uncompress Dosya_Ad .Z
Daha önceden s k t r lm dosyay eski haline getirir.
$ sort dosya
$ sort dosya1>dosya2
Belirtilen dosyay s ralar ve ekranda göüntülenir. kinci kullan mda ise dosya1’in
içeri!ini s ralar ve dosya2’ye aktar r.
$ cal [ay] [y l]
Dr. Halil Yurdugül 13
yurdugul@hacettepe.edu.tr
Belirtilen ay ve y la ili kin takvimi verir.
$ sleep n
Belirtilen n saniye için i lemleri bekletir.
$# de!i keni özel bir de!i kendir ve komut için girilen parametre say s n içerir.
IV-KABUK PROGRAMLAMA
MS-DOS i letim sisteminde dir ve format komutlar n ele alal m. Bunlardan dir komutu,
do!rudan kabuk taraf ndan yorumlanan bir komutdur. Bu tür komutlara içsel komut
(internal command) denir. Ancak komut sat r ndan format komutu girildi!i zaman
kabuk format.com adl program çal t r r. Bu tür komutlara ise d sal komutlar
(external commands) ad verilir. MS-DOS i letim sisteminde geçersiz bir komut
girildi!inde kullan lan kabuk (ki burada command.com’dur) öncelikle komutu olarak
girilen ifadeyi yorumlamaya çal r. Komutu tan yamad ise bunun bir d sal komut
olup olmad ! n ara t r r. Her ikiside söz konusu de!ilse;
MS-DOS’a ili kin olarak d sal komut niteli!i ta yan dosya uzant lar : *.com, *.exe ve
*.bat.
*.bat uzant l dosyalar toplu i lem dosylar olarakta adland r lan dosyalard r. Komut
sat r ndan birden fazla komut girilecekse bu durumda toplu i lem dosyalar ndan
yararlan labilir. Toplu i lem dosyalar nda, komut sat r ndan girilecek komutlar sat rlar
Dr. Halil Yurdugül 14
yurdugul@hacettepe.edu.tr
halinde girilir. Dosyan n d sal bir komut olarak girilmesi durumunda, kabuk her bir
sat r i leme sokar.
Unix i letim sisteminde de bu tür dosyalar olu turmak olanakl d r. Toplu i lem
dosyalar na script ya da kabuk program adlar da verilmektedir. A a! da basit bir
kabuk program verilmi tir.
Örne!in:
1. Sat r PATH=”/bin/bash”
2. Sat r ls –l
3. Sat r echo “Dizindeki dosya adlar listelenmi tir”
Aç klama:
1. Sat r) Komutlar yorumlayacak olan kabuk’un bulundu!u dizine gönderme yapar. Bu
ifade her programda konulmak zorundad r. fadenin bir di!er kullan m biçimi ise:
# ! /bin/bash
Bu iki kullan mdan birisi mutlaka ilk sat rda kullan lmak zorundad r.
2. Sat r) ls –l komutu çal t r l r.
3. Sat r) echo “...” yöntemi ile kullan c ya bilgi aktar l r.
Daha önce kullan c ya mesaj vermek için a a! daki yöntemin kullan ld ! verilmi ti.
echo “Ekrana yaz lacak mesaj”
Burada dikkat edilmesi gereken ey; de!i kenin içeri!i bo iken $ i areti almamas ,
içeri!i dolu olan de!i kenin ba na $ i aretinin gelmi olmas d r.
De!i ken kullan m nda iki önemli komut; kullan c ya bilgi aktar rken echo, kullan c dan
bilgi al rken ise read komutlar n n kullan lms d r.
Komutlar n genel gösterimi yukar daki gibidir. Bu sat rdaki herbir parametre bir
de!i ken ile ifade edilir.
Örnek
$who > liste
$grep b9843000 liste
b9843000 adli ki inin sistemde olup olmad ! n kontrol eden iki sat rl k komut göz
önüne al nd ! nda, bu i lemi bir komut dosyas ile gerçekle tirmek istenirse grep
komutuna parametre olacak ekilde d ar dan bilgi girilmesi gereklidir. Bu durumda
parametre de!i kenlere ihtiyaç vard r. Bu örnekte;
$0=grep
$1=b9843000
$2=liste
$3=Biti kontrol karakteri
Bunlar göz önüne alarak yukar daki i lem bir komut dosyas olarak olu turuldu!unda;
Dr. Halil Yurdugül 16
yurdugul@hacettepe.edu.tr
$cat arabul
who | grep $1
ctrl+D
Bu i lemden sonra art k arabul ad nda bir komut olu turulmu tur. Parametre ile
kullan m ekli ise;
$arabul b9843000
Matematiksel lemler
Matematiksel i lemler iki türlü gerçekle tirilebilir. Bunlardan ilki i lem sat r nda
matematiksel i lemi yapmakt r di!eri ise bir de!i keni matematiksel bir de!i ken
olarak tan mlamakd r.
let “matematiksel i lem” ile tek bir sat rda tamsay l bir i lemi gerçekle tirmek
olanakl d r.
let “sonuc=7*12”
let “3+8”
$cat>topla
typeset –i sonuc
sayi1=2
sayi2=3
sonuc=sayi1+sayi2
echo $sonuc
Buraya kadar olan anlat mlar tamsay lar için geçerlidir. Ancak tamsay sal olmayan
i lemler için ise bc komutu kullan l r.
$cat>topla
sayi1=2.2
sayi2=3.3
echo “$sayi1+$sayi2” | bc
Ko ullu fadeler
De!i kenlerle çal man n yan s ra, bir program n ak içerisinde ko ullu yap lara çok
s k ba vurulur. Bu yap lar birer kar la t rma amac ta maktad r.
1) if-else-fi Kal b
Ko ullar
if [ ko ul] Büyük gt
then Büyük E it ge
komutlar Küçük lt
else Küçük E it le
komutlar E it eq
fi E it De!il ne
Örnek:
Dr. Halil Yurdugül 17
yurdugul@hacettepe.edu.tr
D ar dan girilen bir say n n pozitif ya da negatif oldu!u bildiren bir program örne!i.
$cat>bilbakalim
# ! /bin/bash
echo “Bir de!er say giriniz”
read sayi
if [ $sayi –lt 0]
then
echo “Say Negatif”
else
echo “Say Pozitif”
fi
2)Case-Esac Kal b
Birden fazla seçene!in var oldu!u durumlarda kullan l r. Özellikle ekran menülerinde
ba vurulan bir yöntemdir.
case keyword in
Secenek1)
Komutlar;;
Secenek2)
Komutlar;;
:
*)
Komutlar;;
esac
$cat>secbakalim
# ! /bin/bash
clear
echo “1. Ekran Temizle”
echo “2. Sistemdekileri Görüntüle”
echo “3. Dizindeki Dosyalar Listele”
echo “Bir seçene!i giriniz:”
read secenek
case $secenek in
1) clear;;
2) who;;
3) ls –l;;
echo “Hatal Seçenek”
esac
Ko ullu fadeler
Bir komut ya da komutlar dizinini tekrarlatmak amac yla kullan l r. 2 temel yap s
vard r. Bunlardan ilki döngü (tekrar say s ) belli ise for-do döngüsü, döngü say s belli
de!il ise while-do döngüsü kullan l r.
1) for-do döngüsü
Dr. Halil Yurdugül 18
yurdugul@hacettepe.edu.tr
for degisken in deger1 deger2 deger3 … degerN
do
komut1
komut2
:
done
degisken, döngü de!i keni olarakta ifade edilebilir. degerX ise döngünün her
tekrar nda s ras ile alaca! de!erleri belirtir. Döngü i lem sat rlar do-done aras nda
yer alan komutlard r.
for gunler in Pazartesi Sal Çar amba Per embe Cuma Cumartesi Pazar
do
echo $gunler
done
2- while-do döngüsü
Döngünün tekrar say s belli de!il ya da döngü bir ko ula ba!l çal acak ise while-do
döngüsü kullan l r.
while ko ul
do
komut1
komut2
:
done
$cat>dongu
# ! /bin/bash
deger=0
while [ $deger –lt 100 ]
do
deger=$((deger+1))
echo $deger
done
Burada dikkat edilmesi gereken bir di!er konu, (BASH’ a özgü olarak) matematiksel
i lemler (( ve )) parantezleri aras nda yap labilir.
-----------------------------------------------------------------------------------------------
Gözden Geçirmeler
A a! da Unix’e ili kin çe itli komutlar verilmi tir. Sizden istenilen, ilgili komutlara
ili kin aç klamalar gerekli bo luklara yazman zd r.
Dr. Halil Yurdugül 19
yurdugul@hacettepe.edu.tr
Dosya Komutlar
Unix Komutu Aç klama
du []
ln {} {}
ln -s {} {}
file {}
which {}
touch {}
tee {}
wc {}
head []
tail []
fgrep {} []
egrep {} []
find {} []
cut []
sed {} []
awk {} []
fold []
paste []
zcat []
dd {} {}
od {}
nl []
source {}
Dr. Halil Yurdugül 21
yurdugul@hacettepe.edu.tr
TCP/IP – A3 komutlar
Unix Komutu Aç klama
finger []
talk []
pine
ftp []
telnet []
rlogin []
rsh {} []
rcp {} {}
Di3er Komutlar
Unix Komutu Aç klama
date
cal
bc