Unix/Linux sistemlerde kabuk günlük olarak bir çok işlemi yaptığımız bir uygulama alani olarak bilinir ancak sistemi programlamamızı sağlayan bir proglamlama dili olarak da kullanılır.

Komut Nedir?

UNIX sistemlerde kullandığımız araçlara , uygulama yada komut adı verilmektedir.Bunlar “ls”, “cd” gibi günlük bilgisayar kullanımımızda faydalı olan basit araçlar olabildiği gibi “sed”,”awk”,”grep” gibi güçlü araçlar da olabilirler.

Kısacası UNIX’te bir komut sistemde var olan bir programı çalıştırmaya yarar.Örneğin

konsolda “date” komutunu kullanalım derken aslında sitemde varolan ve bize o anki zaman ile ilgili bilgi veren date uygulamasını çalıştırmış oluruz ve bu uygulamanın çıktısı ekrana gönderilir , gerekli bilgiyi ekrandan okumamız sağlanır.”ls” komutunu tek başına kullandığımızda bulunduğumuz dizindeki tüm dosya ve dizinleri görmemizi sağlar.

bash-3.00$ ls

1 flapsizpolar* notlar* odev.html onur.py sistem_a yeni_dialog*

cd_cikar* my.cnf odev* odev.pdf onur.txt sistemi_yeniden_baslat*

bash-3.00$

Daha farklı bir örnek vermek gerekirse , komut satirinda “vim” komutunu yazarsak vi metin editörünü başlatmış oluruz.

Basit Komutlar

Bu tür komutlar komut satırına sadece komut ismi yazilarak çalıştırılabilen uygulamalardir.”date” komnutu bu tür komutlara güzel bir örnektir. Basit komutlar komut satirina sadece komut ismini yazarak çalıştırdığınız komutlardır.

$ komut_ismi

Seçenekli Komutlar

Bu tür komutlar beraberinde bir takım seçeneklerle kullanılan komutlardır.Bu tür komutların kullanımı

$ komut_ismi seçenek1 seçenek2 seçenek3 …

şeklinde olmaktadır.

Örnek;

bash-3.00$ ls -a -l

drwxr-xr-x 2 ttt users 400 2005-03-21 02:30 ./

drwx–x–x 69 ttt users 2936 2005-03-21 02:48 ../

-rw-r–r– 1 ttt users 8275 2005-03-01 16:51 1

-rwxr-xr-x 1 ttt users 190 2005-03-17 05:00 cd_cikar*

-rwxr-xr-x 1 ttt users 9238 2005-03-18 03:05 flapsizpolar

-rw-r–r– 1 root root 4828 2005-03-15 02:53 my.cnf

-rwxr-xr-x 1 ttt users 3108 2005-03-04 09:20 notlar*

bash-3.00$

Bu durumda ls a ve l seçenekleri ile birlikte kullanılmıştır.ls tek başına kullanıldığında basit bir komut olarak karşımıza çıkmaktadır.Ancak beraberinde kullandığımız tüm dizin ve dosyaları göster(-a) ve gösterimi satırlar halinde yap(-l) seçenekleri ile gücünü arttırmış bize daha fazla bilgi vermesini sağlamış olduk.

Bileşik Komutlar

 Unix in en güçlü özelliklerinde birisi de basit ve seçenekli komutları aynı anda kullanmamızı sağlamasıdır.

bash-3.00$ ls -al ; date

drwxr-xr-x 2 ttt users 400 2005-03-21 02:30 ./

drwx–x–x 69 ttt users 2936 2005-03-21 02:48 ../

-rw-r–r– 1 ttt users 8275 2005-03-01 16:51 1

-rwxr-xr-x 1 ttt users 190 2005-03-17 05:00 cd_cikar*

-rwxr-xr-x 1 ttt users 9238 2005-03-18 03:05 flapsizpolar

-rw-r–r– 1 root root 4828 2005-03-15 02:53 my.cnf

-rwxr-xr-x 1 ttt users 3108 2005-03-04 09:20 notlar*

Mon Mar 21 03:13:00 UTC 2005

bash-3.00$

Daha önceden kullanımını gördüğümüz ls -al komutundan sonra komut ayraçı olan ”;” ü kullanarak date komutunu verdik ve ekrana bulunduğumuz dizindeki dosya ve dizinleri gösteren çıktının yanısıra tarihi de gösterrmeyi sağladık.

Dikkat ederseniz komut uygulama sırası komutları soldan sağa noktalı virgüllerle ayrılmış bütünler olarak algılanmaktadır.Sözgelimi

$ ls -al ; date ; whoami ; top

Bir komut dizisinde ilk uygulanan komut ls – al , son uygulanan komut ise top komutu olacaktır.

Kabuk Nedir?

Açıkladığımızı örneklerde bir komutu verdiğimiz zaman o uygulamanın çalıştırıldığını ve ekrana aktarıldığını söylemiştik.Bu kabuk(shell) dediğimiz özel bir program sayesinde olmaktadır , kabuk Unix sisteminizle aranızdaki arayüz olarak tabir edilebilir.

Genellikle kabuk Unix sistemlerin komut satırı olarak bilinmektedir ancak yapabilecekleri bundan daha fazlasıdır ; bir programlama dili olarak kullanılır , içerisinde mantıksal , şartsal döngüler kurabileceğiniz , kendi fonksiyonlarınızı oluşturabileceğiniz bir programlama dili . Farklı işletim sistemlerinin komut satırı uygulamaları ile karşılaştırılamayacak kadar güçlü bir komut satırıdır.

Slackware Linux dağıtımında kullanılan paket yönetim uygulaması olarak bilinen (aslında sistem yönetim uygulaması demek daha doğrudur) “pkgtool” uygulaması tamamen kabuk betikleri kullanılarak yazılmıştır . Sanırım bu size kabuk programlamanın gücü hakkında bir bilgi verecektir.

Şimdi de gelelim sıkça duyacağınız kabuk çeşitlerine , Unix’te iki ana kabuk çeşidi bulunmaktadır.

-sh, ksh ve bash ı içeren BOURNE KABUĞU(Bourne shell)

-csh , tcsh ı içeren C KABUĞU(C shell)

BOURNE tipi kabuklar

  1. Bourne Shell(sh)

  2. Korn Shell(ksh)

  3. Bourne Again Shell(bash)

  4. POSIX Shell(sh)

C tipi kabuklar

  1. C Shell(csh)

  2. TENEX/TOPS Shell(tcsh)

Yazıda bash ı ele alacağımız için onun hakkında biraz bilgi verelim.

Bourne Kabuğu

Orijinal Bourne Kabuğu 1970 lerin ortasında Stephen R. Bourne tarafından yazılmıştır.Unix sistemlerde kullanılan ilk kabuktur ve bu yüzden de kabuk adını almıştır:)

Orjinal bourne kabuğu işlem kontrolu , değişken kullanımı , düzenli ifadeler , akış kontrolu

, güçlü girdi ve çıktı kontrolu ve fonksiyon tanımlamam gibi kullanışlı özelliklerinin

yanında dosya ismi tamamlamama , komut geçmişi ve komut düzenleyememe ve çoklu arkaplan işlemleri çalıştıramama gibi yetersizlikler barındırıyordu.

Bu gibi eksiklikleri daha sonraları Free Software Foundation’dan Brian Fox tarafından görülmüş olacak ki BASH Brian FOX tarafından geliştirilmeye başlandı.Bourne Again Shell (bash) GNU projesinin bir parçası olarak geliştirildi ve Linux gibi GNU-tabanlı sistemlerde Bourne Shell(sh) ın yerini aldı.Slackware ve RedHat da dahil olmak üzere bir çok sistemde sh ın yerini bash almıştır.Peki neden gibi sorular sorduğunuzu duyar gibi oluyorum , buna en güzel örnek bash ın getirdiği ve komut satırı kullanımını önemli ölçüde kolaylaştıran özellikler oldu.Bunlardan birkaçı şu şekilde özetlenebilir;

-Kullanıcı , dosya ve dizin , sunucu , değişken , komut isimlerini tamamlayabilmesi

-cd komutunda dizin yada dosya yollarını isimlerini düzelterek gösterebilmesi

-Sonsuz boyutta dizilerin oluşturulabilmesi

-Tam sayı aritmetiği

Komutların Çalıştırılması

Sisteminizde çalıştırmak istediğiniz komutları komut satırına yazdıktan sonra “Enter” tuşuna basarak çalıştırılabileceğini herkes mutlaka bilmektedir 🙂 ancak kimi zaman peşi sıra iki komutu çalıştırmak , üç satırda yazılan bir komutu çalıştırmak yada echo gibi bir komut ile kabukta işlemler gerçekleştirme ihtiyaçı duyabilirsiniz.Bu noktada kabuğun bize sağladığı farklı yardımcı işlem karakterlerine sahiptir.Bu tabiri(yardımcı işlem karakterleri) başka bir yerde farklı bir isimle görebilirsiniz bu benim şahsi olarak onlara verdiğim isimdir. Kabuk gerçekleştireceğiniz bu tür işlemler için bu yardımcı işlem karakterlerimize bir tablo oluşturarak bakmakta fayda var.

Kullanım İşaret adı Uygulaması

komut_adı \

Ters bölü işareti

İşaretten sonraki satıra komutun devamını girmenizi sağlar.

komut_adı ; Noktalı Virgül Peşi sıra gelen komutları çalıştırır.

‘komut_adı’

Tek tırnak işareti

Tırnak işaretleri arsında adı geçen komut_adını çalıştırır.

$(komut_adı)

Dolar işareti ve parantezler

Parantezler içerisindeki komut_adı nı çalıştırmaya yarar.

`komut_adı`

Yatık tırnak işaretleri(AltGr+;)

Komut_adının çalıştırılması için kullanılır.Genellikle echo komutunun çıktı olarak gönderdiği karakterlerin arasında çalıştırmak istediğimiz komutları ile birlikte kullanılır.

Bundan sonra kabukta birbiri peşi sıra gelen komutları çalıştırabilirsiniz.Hemen yardımcı işlem karakterlerinin kullanımlarını bir örnekle pekiştirelim.

11

bash$ ps;date;uptime

Ps,date ve uptime komutlarının çıktılarını alt alta ekrana yazılacaktır.2

2 ‘xmms’ –>Xmms i çalıştırır.

3

echo `date` yada `date`–> Tarihi görüntüleyecektir.

4

$(uname -r)–>Sisteminizin çekirdek sürümünü gösterecektir.

3 ve 4 numaralı olarak belirtilen komutları komut satırınıza girdiğinize “Command not found”,”Komut bulunamadı” ifadesi dikkaitnizden kaçmamıştır umarım.Aslında “ ve $() yardımcı işlem karakterleri çalıştırılan komutu daha doğru bir ifade ile girdiyi ,direk olarak çıktıya yönlendirmez. Yeni bir girdi imiş gibi kabuğa gönderir.Bash’teki yararlı komutlardan biriside bir karakter yada karakter kümesini ekrana yazdıran yada tekrarlanmasını sağlayan “echo” komutudur.3 ve 4 numaralı komutları şimdide isterseniz şu şekilde yazın;

echo `date`

echo $(uname -r)

Kabuk programlamaya başladığımızda bash scriptlerimizin çoğunda echo ile çalışacağımız için şu an bu bilgiyi tekrar tekrar çalışmanızda fayda var.