You are on page 1of 21

Dr.

Halil Yurdugül 1
yurdugul@hacettepe.edu.tr

Kabuk Programlama..!

Unix letim Sistemi

Unix’ te dosya ve
dizin komutlar

Unix’te Önemli
Komutlar

Kabuk Programlama

De i ken Kullanmadan De i ken Kullanarak

Sistem De i kenleri Kullan c De i kenleri

f –else-fi Ko ul ifadeleri ve Kal plar


Case-Esac

Döngü fadeleri ve Kal plar

While-Do-Done
For-Do-Done
Dr. Halil Yurdugül 2
yurdugul@hacettepe.edu.tr

I-) letim Sistemi ve UNIX

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.

letim sistemlerinin s n fland r lmas n n birçok ölçütü bulunmaktad r. Bunlardan biri;


komut yönelimli (command oriented) bir di!er ifade ile karakter tabanl , di!eri ise;
nesne yönelimli (object oriented) yani grafik tabanl olarak s n fland rmad r.

Komut Yönelimli MS-DOS, Unix vb...


Nesne Yönelimli Windows 9x, NT, 2000
X-Windows, IBM-OS/2, Mac-OS

Ö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.

Tek kullan c l , Tek i lemli MS-DOS


Windows 95/98
Tek kullan c l Çok i lemli IBM - OS/2 (GUI)
MAC-OS, System 7.5
Çok kullan c l Çok i lemli UNIX versiyonlar Windows NT, 2000

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.

Ken Thompson, Berkeley'de bulunan California Ünivesitesi'nde çal malar na devam


etti. Üniversitede bulunan 2 Yüksek Lisans ö!rencisi (Bill Joy ve Chuck Haley) ile
birlikte çal arak Unix'in ilk Berkeley verisonunu üretti. Bu versiyon ö!rencilere
Dr. Halil Yurdugül 3
yurdugul@hacettepe.edu.tr
da! t ld ve kaynak kodu üzerinde bir çok farkl ki i taraf ndan ortakla a çal lmaya ve
geli tirilmeye ba land . Unix'in Berkeley versiyonu BSD (Berkeley Software

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.

MS-DOS i letim sisteminde kabuk olarak command.com kullan l r. Dos i letim


sisteminin aksine Unix'in kaynak kodlar aç k oldu!undan dolay ve Unix'in C gibi
yüksek seviyeli bir programlama dili ile yaz lm olmas nedeniyle Unix’te geli tirilmi
bir çok kabuk program vard r.
Dr. Halil Yurdugül 4
yurdugul@hacettepe.edu.tr
Shell Aç l m Aç klama
sh Bourne Steve Bourne taraf ndan geli tirilen orijinal Unix Shell
Shell
csh C-Shell Berkeley Ünivesitesinde C dili kullan larak yaz lm t r.
ksh Korn David Korn taraf ndan geli tirilmi tir. sh ve tcsh’nin geli mi bütün
Shell özeliklerine sahiptir. En etkili kabuk olarak bilinir.
bash Bourne Free Software Foundation taraf ndan geli tirilmi tir. Bourne benzeri
Again bir script dili ile yaz lm t r ve tcsh ve ksh’ n bütün özelliklerine
Shell sahiptir.
tcsh T-Shell Geli tirilmi C-Shell olarak bilinir.
zsh Z-Shell Bash, ksh ve tcsh ile benzerlik gösterir.

Bulundu!unuz sistemin hangi kabuk program n kulland ! n z ö!renmenin ilk yolu; A!


üzerinden bir sisteme girdi!inizde (log in) kar n za ç kacak olan komut sat r
i aretidir.

Komut areti Kabuk


$ Bourne Shell
$ Korn Shell
% C-Shell ve türevleri
> T-Shell

Unix'te kabu!un önemli iki fonksiyonu vard r.

Çekirdek (Kernel):

MS-DOS'ta sistem dosyalar olarak bilinen msdos.sys ve io.sys dosyalar , bu i letim


sisteminin çekirdek dosyalar n olu turmaktad r. Unix'te ise vmunix, unix gibi isimler
almaktad r.

Çekirdek, bilgisayar aç ld ! zaman belle!e yüklenir. Kabuk, kullan c n n girdi!i komutu


yorumlad ktan sonra çekirde!e bildirir. Dolay s ile kabuk ile çekirdek birlikte çal r.
Örne!in; rm silbeni komutunu kullan c girmi olsun. Komut ile istenen, silbeni
dosyas n n sistemden silinmesidir. Bu durumda kabuk rm komutunun içeren ilgili
dosyay ara t r r ve bulunca da bu program silbeni dosyas üzerinde çal t rmak için
çekirde!e gereksinim duyar. rm komutunu içeren dosyan n çal mas bitince kabuk'a
dönülür ve kabuk yeni bir komut beklemek için komut sat r n görüntüler.

Ç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.

Çekirde!in di!er görevleri ise;


• Bir dosyay açmak
• Dosyaya yazmak
• Dosyadaki bilgileri okumak
Dr. Halil Yurdugül 5
yurdugul@hacettepe.edu.tr
• Bir program çal t rmak
• Bir i lemi sonland rmak

Dosya ve Dizin Yap s

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.

Unix'te kullan lan dizin yap s :

/root
|
--------------------------------------------------------------------------
| | | | | | | |
/bin /dev /etc /home /lib /tmp /usr kernel file
---------------
| |
user1 user2

/bin: bu dizinde, sistemle ilgili komut ve hizmet programlar bulunur.


/dev: bu dizin, yaz c ve terminal gibi fiziksel ayg tlara ili kin dosyalari içerir.
/etc: bu dizin , sistem yöneticisi taraf ndan kullan lan komut ve dosyalar içerir.
/lib: bu dizin, de!i ik program ve dillerin ihtiyaç duydu!u ar ivleri içerir.
/temp: bu dizin, geçici (temprorary) dosyalar n n yarat ld ! ve tutuldu!u yerdir.
/usr: bu dizin, di!er kullan c lar ile payla lan dizin ve sistem dosyalar n içerir.
/home: bu dizin, sistemdeki herbir kullan c için kullan c dizinlerini içerir.

*************************************

II-) UNIX’te Dizin ve Dosya lemleri


BTÖ 301 dersi kapsam nda ele al nan Unix i letim sistemi uygulama dersleri için telnet
193.140.216.2 ba!lant s gerekmektedir. steyenler telnet unix-shells.com adresinden
ücretsiz account alarak örnek çal malar yapabilir.

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 oldu3unuzu ö3renmek.

Hangi dizinde oldu!unuzu ö!renmek için: pwd (print working directory) komutu
kullan l r.

Not: Unix’te, yanl bir karakter girildi!inde backspace ya da delete tu lar


kullan lamaz. Bunlar yerine
# mlecin bir solundaki karakteri siler. Yanl karakter say s kadar kullan labilir
@ Tüm karakterleri geçersiz yapar.

Bulundu3umuz dizinde hangi dosyalar var?.


ls parametre

-a gizli dosyalar listele


-d Geçerli dizini gösterir
-F / ile dizinler
* ile çal t r labilen dosyalar görüntülenir
-g Uzun ve özelikli liste
-l Dosya ve dizinler için bütün özellikleri ile listeler
-R Bütün altdizinleri listeler
-t Son kullan lma tarihine göre listeler

Sistemde kimler var?


who komutu ile sistemde o esnada kimler oldu!unu ö!renebilirsiniz.

Ben kimim?
whoami komutu ile sizin kim oldu!unuzu (user id) ö!renebilirsiniz.

Çal ma dizinini de3i tirme


cd (change directory)

cd Kullan c dizinine döner


cd .. Bir üst dizine geçer
cd altdizin Belirtilen altdizine geçer

Komut hakk nda bilgi alma


man komutad Belirtilen komut hakk nda bilgi verir

Dosyalar kopyalama
cp (copy)

cp dosya1 dosya2 dosya1’i dosya2 olarak kopyalar


cp dosya1 dizinad dosya1’i belirtilen dizine kopyalar
cp dosya1 dosya2 dizinad dosya1 ve dosya2’yi belirtilen dizine kjopyalar
Dr. Halil Yurdugül 7
yurdugul@hacettepe.edu.tr
Dosya ta ma
mv (move) Bir ya da birçok dosyay ta r veya yeniden adland r r.

mv dosya1 yenidosya dosya1’i yenidosya olarak ad n de!i tirir.


mv dir newname dizin ad n de!i tirir
mv dosya1 dizin dosya1’i belirtilen dizine ta r.
mv dosya1 dizin/yeniisim dosya1’i belirtilen dizine bir ba ka isimde ta r

Dosya Silme
rm (remove) Silinecek Dosyalar

rm dosyaad belirtilen dosyay siler


rm -i dosyaad Uyar s z siler

Dizin yaratma
mkdir (make directory)

mkdir subdir geçerli olan dizin içerisine bir alt dizin açar

Dizin silme
rmdir (remove directory)

rmdir altdizin belirtilen dizini siler (e!er dizin bo ise)

Dosya içeri3ini görmek için


more dosyaad Belirtilen dosyan n içeri!ini ekranda görüntüler. çerik
ekrana s !mad ! zaman spacebar bir sonraki sayfay
görüntüler, q ise sonland r r.

Dosya bulmak için


find [yol] ölçüt
Ölçütler:
-name Dosya ismi ile arama (find /public_html/ -name deneme
-user Kullan c ad na göre arama
-perm Dosya yetki ve eri im haklar na göre arama
-size Dosya büyüklü!üne göre arama (Dosya büyüklü!ünü blok
olarak belirtiniz. 1 blok=512 KB)

Dosyan n istatistiksel özellikleri için


wc –[lwc] dosya_ad Belirtilen dosyan n sat r, kelime ve karakter say s n gösterir.
l (line) Sat r say s
w Dosyada bulunan kelime say s n verir.
c dosyada bulunan karakter say s

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.

Unixte Kullan lan Meta-Karakter’ler

Simge Kullan m Aç klama


> Komut1 > Dosya_ad Komut1’in sonuçlar n belirtilen dosyaya aktar r.
>> Komut1 >> Komut1’in sonuçlar n belirtilen dosyan n sonuna
Dr. Halil Yurdugül 8
yurdugul@hacettepe.edu.tr
Dosya_ad ekler.
| Komut1 | Komut2 Komut1’in ç kt s n komut2 için girdi olarak kullan r.
&& Komut1 && Komut2 Komut1 ba ar l olursa komut2 çal t r l r.
|| Komut1 || Komut2 Komut1 ba ar s z olursa komut2 çal t r l r.
; Komut1 ; komut2 ;... Komutlar birbirinden ay rmak için kullan l r.

DOS Komutlar Unix Komutlar "çerik


help [] man [] {} Yard m
chkdsk [] df [] Disk bo lu unu verir
dir/w [] ls [] Dizindeki dosyalar listesini verir
cd pwd O anki dizini gösterir
cd {} cd {} Dizin de i tir
cd .. cd .. Bir önceki dizine geç
cd \ cd Kullan c dizinine geç
md {} mkdir {} Bo dizin yarat
rd {} rmdir {} Bo dizini sil
type {} cat [] [] Dosyalar n içeri ini göster
type {} | more more {} [] çeri i pencereye göre düzenle
copy {} {} cp {} {} Dosya kopyala
rename {} {} mv {} {} Dosya ad de i tir
move {} {} mv {} {} Dosya ta
sort {} sort {} Dosyalar s rala
edit {} emacs {}& Dosya düzenle
del {} rm {} [] Dosya(lar ) sil
del/p {} rm -i {} [] Uyar s z sil
deltree {} rm -r {} Dizini içeri i ile sil
pkzip {} gzip {} Dosya s k t r
pkunzip {} gunzip {} S k t r lm dosyay aç
msbackup [] tar cv . Yedekleme
msbackup [] tar xv Yedekten yükleme
attrib {} {} chmod {} {} Dosya niteliklerini de i tirme
find "{}" {} grep {} {} Dosya içerisinde karakter arama
print {} lpr -P{} [] Dosyay yazd rma
print/c lprm -P{} {} Yazd r lacak dosyay iptal etme
doskey/h history Geçmi komutlar görüntüleme
doskey {}={} alias {} {} Komut dosyas olu turma (batch file)
set set Yerel de i kenleri gösterme
path echo $PATH Çal ma yolunu göster
for {} {} foreach {} {} Döngü komutu
command tcsh [] Kabuk program n de i tirme
{} [] {} [] Program ve scripti çal t rma (*.bat dosyas gibi)
rem [] # [] Script ya da programlamada komut sat r
echo {} echo {} Scriptte mesaj görüntüleme
if {} {} if {} {} Ko ul
goto {} goto {} Scriptte gönderme/sat r sap tma
cls Ctrl-l Ekran temizle
Ctrl-c Ctrl-c Geçerli i lemi sonlad rma
Ctrl-z Ctrl-d Girdi sonu
Pause Ctrl-s Ekran görüntüsünü durdurma
Space Ctrl-q Bir önceki (ekran dondurma) i lemi sonland rma
exit exit [] Kabuk ya da scripti sonland rma
Dr. Halil Yurdugül 9
yurdugul@hacettepe.edu.tr

Unixte Dosya ve Dizinlere Eri im Yetkileri

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

Örne!in 751 için,

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.

* Kullan c lar ise (r=0)+(w=0)+(x=1)=1 yetkisine sahiptir. Yani sadece


çal t rabilirler.

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/g/o/a] (+/-) [r/w/x/s] dosya/dizin ad


Dr. Halil Yurdugül 10
yurdugul@hacettepe.edu.tr

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.

u : dosya/dizinin sahibi (user)


g : dosya/dizinin sahibiyle ayn grupta olanlar (group)
o : kullan c lar (others)
a : herkes (all)

+ : yetki ekleme
- : yetki ç karma

r : okuma yetkisi (read)


w : yazma yetkisi (write)
x : çal t rma yetkisi (execute)
s : Kullan c (others) ilgili program çal t rd ! nda dizin/dosya sahibi ile ayn yetkiye
e it olurlar...

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.

III-) UNIX’te kullan lan Di3er Komutlar


Di3er kullan c larla ileti im:

talk kullan c _ad Ba ka kullan c lar ile „e zamanl “ mesajla ma içindir.


write kullan c _ad Ba ka kullan c lara mesaj göndermek için.
mail kullan c _ad Mail göndermek için.
ping kullan c _ad Di!er kullan c lar n sisteme ba!l olup olmad ! n ö!renmek
için.
finger kullan c _ad Kullan c hakk nda bilgi almak için.

Dosya içinde bir metin arama


grep –[i] içerik dosya_ad Belirtilen dosyada “içerik” aran r.
i: büyük/küçük farketmez.

grep –i b9843000 liste* liste ile ba layan dosyalarda b9843000 kelimesini arar

Zaman Ö3renmek
time

Tarihi Ö3renmek
date

Komut ad n de3i tirme


alias Yeni_Komut_ad =“Eski_Komut_ad “
Dr. Halil Yurdugül 11
yurdugul@hacettepe.edu.tr
alias dir=“ls -l“
alias gecmis=“history“
alias kopyala=“cp“

Geçmi komutlar görmek


history

Dosya s k t rma ve açma


compress dosya_ad dosyay dosya_ad .Z ad yla s k t r r.
uncompress dosya_ad s k t r lm dosyay açar.

ftp>open host Uzaktaki bilgisayarla ba!lant kurmak için

ftp>user: .................. Ba!lant kurulduktan sonra sisteme girmek için


kullan c ad n giriniz.
ftp>password: ********* Login olmak için gerekli ifreyi giriniz.

ftp>cd dizin_ad Belirtilen dizine geçer.

ftp>mput dosya_ad Belirtilen dosyay uzaktaki bilgisayara transfer


eder.
ftp>mget dosya_ad Belirtilen dosyay yerel bilgisayara transfer
eder.
ftp>! Komutu ile ftp program n sonland r r.

Unix’te Kullan c lar aras ileti im:

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.

E!er talk komutu ile görü me yapmak istemiyorsan z:


$ mesg n
Yukar daki komutu etkisizle tirip talk komutlar na açmak isterseniz:
$ mesg y

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.

Unix’te Dosyalara li kin Uygulamalar:

$ cat Dosya1 Dosya2 Dosya3 > Dosya


Belirtilen s rayla 3 dosyay birle tirerek Dosya ad nda yeni bir dosya olu turur.

$ 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.

$ find path option output


$ find /bin –name sil*
$ find ~ -name silbeni
$ find . -user halil
$ find / -perm 777
$ find ~ -newer dosya1 -print
Belirtilen konumda belirtilen özellikteki dosyalar bulur.

$ grep [-inl] ifade dosya(lar)


$ grep -i <html> ~/* >sonuc
Belirtilen ifadeyi belirtilen dosya içerisinde arar. Buldu!u sat rlar aksi belirtilmedikçe
ekranda görüntülenir.
-i ignore case (küçük/büyük karakter farketmez)
-n bulunan sat rlar n sat r numaralar n verir.
-l yaln zca dosya adlar n listeler.

Unix’te De3i ik Uygulamalar:

$ 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.

$ at saat tarih komut


$ at 1200 ‘mail yurdugul < silbeni.txt’
Belirtilen süre içerisinde belirtilen i lemleri gerçekle tirir.

mailx –s “Odev 1” yurdugul < silbeni.txt


mailx –s “Odev 1” hyurdugul@hotmail.com < silbeni.txt

Yandaki script dosyas bul bakal m olsun.


# ! /bin/bash
case $# in
$ bul aranan_dosya 0) echo “Lütfen parametre giriniz”
$ bul ~/ silbeni.txt 1) find . –name “$1” –print;;
2) find “$1” –name “$2” –print;;
*) echo “Bir hata olu)tu”
eklinde bir ya da 2 parametre ile esac
çal maktad r. lk seçenekte girilen dosya ad
(.) yani geçerli dizinde aranmaktad r. E!er
aksi bir path belirtilmi se belirtilen dosya orada aran r.

$# de!i keni özel bir de!i kendir ve komut için girilen parametre say s n içerir.

$ find . –name dosya_ad –print $ bul dosya_adi


$ find /home –name silbeni.txt –print $ bul /home dosya_adi

IV-KABUK PROGRAMLAMA

DEH IKEN KULLANMADAN 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;

C:\>Bozuk dosya veya komut ad


uyar s n iletir.

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.

Yukar da belirtilen dosyay listele ad nda saklad ! m z varsayal m. Bu program n


çl abilmesi için öncelikle yetki verilmesi gerekmektedir.
$ chmod 777 listele
Herkese çal t rma yetkisi verdikten sonra komut sat r ndan dosya ismi girildi!inde:
$ listele
kabuk bunu bir d sal komut olarak i leme sokacak ve dizindeki dosyalar listelenip
“Dizindeki dosya adlar listelenmi tir” uyar s ile sonlanacakt r.

DEH IKEN KULLANARAK KABUK PROGRAMLAMA

Daha önce kullan c ya mesaj vermek için a a! daki yöntemin kullan ld ! verilmi ti.
echo “Ekrana yaz lacak mesaj”

Ancak mesaj bir de!i ken içinde sakland ! dü ünülürse;

mesaj=”Ekrana yaz lacak mesaj”


echo $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.

echo “Lütfen bir say giriniz”


read sayi
echo $sayi

De!i kenler 3 grupta ele al nabilir. Bunlar s ras yla;

1 Sistem de!i kenleri


Dr. Halil Yurdugül 15
yurdugul@hacettepe.edu.tr
2 Kullan c de!i kenleri
3 Parametre de!i kenleri

Sistem de3i kenleri


Kullan c ya ili kin bilgilerin sistem taraf ndan tutulan de!i kenlerdir. Bu tür de!i knlere
global de!i ken ya da çevre (environment) ad da verilemktedir. Bourne Shell türü
kabuklarda sistem de!i kenleri büyük harfler ile ifade edilir. C shell türü kabuklarda
ise bu de!i ken isimleri küçük harfler ile gösterilir.

$HOME Kullan c dizinini gösterir


$SHELL Ba lang çta atanan kabuk türünü gösterir
$LOGNAME Kullan c ad n gösterir

Kullan c De3i kenleri


Kullan c taraf ndan tan mlanan de!i kenlerdir. Bourne Shell ya da benzer kabuklarda
de!i kenlere de!er atamalar :
De*i+ken=”De*er”

C kabuklar nda ise de!i kenlere de!er atamalar :


set de*i+ken=de*er

Parametre De3i kenleri


Bilindi!i gibi kabuk programlar bir d sal komuttur. Komutlar genellikle bir parametre
ile çal t ! na göre olu turulan programlarda parametre alabilirler. Ancak girilecek
parametre de!erleri sabit olmad ! için bu parametrik bilgiler birer de!i ken olarak
tan mlan r.

Komut Parametre1 Parametre2 Parametre3 ....


Find /home/ -name Deneme.htm

Komutlar n genel gösterimi yukar daki gibidir. Bu sat rdaki herbir parametre bir
de!i ken ile ifade edilir.

Komut Parametre1 Parametre2 Parametre3 ....


$0 $1 $2 $3 ...

find /home/ -name Deneme.htm


$0 $1 $2 $3 ...

Ö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”

typeset –i de!i ken


Böyle bir tan mlama sat r aralar nda de!i kene ili kin matematiksel i lemlere olanak
verir.

$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

Çe%itli Unix komutlar ..!


Not: {} i areti zorunlu parametreleri; [] ise zorunlu olmayan parametreleri ifade eder.

Unix Komutu Aç klama


man [] {}
df []
ls []
ll []
ll -t []
ll -R []
pwd
cd {}
cd ..
cd
mkdir {}
rmdir {}
cat [] []
more {} []
less {} []
cp {} {}
mv {} {}
sort {}
rm {} []
rm -i {} []
rm -r {}
gzip {}
gunzip {}
tar cv .
tar xv
chmod {} {}
diff {} {}
grep {} {}
history
alias {} {}
echo $PATH
setenv PATH {}
foreach {} {}
# []
echo {}
if {} {}
goto {}
Ctrl-l
Ctrl-c
Ctrl-d
Ctrl-s
Ctrl-q
exit []
Dr. Halil Yurdugül 20
yurdugul@hacettepe.edu.tr

Giri – Ç k Yönlendirmeleri ve Pipe lemleri


Operatör Aç klama
<
<<
>
>!
>>
>>!
>&
>>&
>>&!
|
|&
`command`

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

Proses (i ) –kontrol komutlar


Unix Komutu Aç klama
yppasswd
stty
bindkey
alloc
limit
limit {} {}
umask {}
xargs {} []
tr {} {}
setenv
setenv {} {}
unset {}
unsetenv {}
echo ${}
nice {} []
renice {} {}
Ctrl-z
jobs
ps []
bg []
fg []
stop {}
kill {}
batch [] []
w
sleep []
time []
while {}
logout

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

You might also like