İlk yazı ve Shellscript
Merhabalar
Uzun zamandır aklımda olan ama bir türlü fırsat bulamadığım “benimde blog yazmam gerek “ düşüncemi sonunda eyleme döküyorum.Öncelikle bu yazıyı yazmamda ki temel etmen Linux Yaz Kampıdır.LYK da aldığım eğitim gereği hem öğrendiklerimi unutmamak hem bildiklerimi insanlara aktarmam gerektiğini hissettim ve kendime ilk konu olarak Shellscript(Kabuk Programlama)’i seçtim.Bu yazımda genel olarak Shellscript nedir?Shellscript yetenekleri ve özellikleri nelerdir?Shellscript nasıl yazılır?Shellscriptde global değişkenlerden,betik yazımında tırnakların öneminden, aritmetik operatörlerden, döngü ve koşul kullanımlarından bahsedicem.Umarım faydalı bir yazı olur.
Shellscript Nedir?
Shellscriptin ne olduğundan bahsetmeden önce kısaca “shell” nedir onu anlatmam gerek.
Shell: “Shell” Türkçe “Kabuk” anlamına gelmektedir.Kullanıcının yazdığı komutların sistem üzerinde çalışmasını sağlayan kısımdır.Birden fazla kabuk bulunmaktadır örnek vericek olursak:
=>Bornue Shell(sh)
=>Bourne Again Shell(Bash)
=> C Shell
Kısaca shell bu şekildedir.Artık shellscriptden bahsedebiliriz.
Linux altında hızlı ve pratik programlama yapmanın en kısa yolu shellscript ile yapılır.İşletim sisteminin doğal komutlarını çalıştırma ve ek herhangi bir yorumlayıcı istememesi shell script(betik) dilini diğerlerinden ayıran en önemli faktördür. Yazdığınız bir kodu tüm Linux/UNIX sistemlerde kullanabiliriz.Shellscript konsoldan verilen komutları belirli bir düzene uyarak çalıştırmaktan ibarettir.
Shellscriptin Yetenekleri
Çevre Değişkenleri
Aritmetik İşlemler
Diziler
İf yapısı
Case Yapısı
For Döngüsü
While Döngüsü
Shellscript nasıl yazılır?
Herhangi bir metin editörüyle programı yazıp kaydedip çıktıktan sonra yazdığımız programa “chmod +x programismi “şeklinde çalıştırma yetkisi vermemiz gerekir.Bu yetkiyi verdikten sonra “./programismi” yazarak scriptimizi çalıştırabiliriz.
Değişkenler
Çevre değişkenleri değişken adından sonra “=” işareti yazılarak kurulur;DEGISKENADI=deger
Komut satırında degiskenin adının önüne “$” işareti atılarak da değişkenin değeri okunur.
Tırnaklar
Tırnaklar kullanılarak katarlar(string) tanımlanır.Bashde üç çeşit tırnak kullanımı vardır.
“ ”(Çift Tırnak)=Çift tırnağın içine yazılan katarda değişken yakalanır ve neye eşitse o yakalanır ama komut yakalanmaz yani komut çalıştırmaz.
‘ ’(Tek Tırnak)=>Ters tırnak içerisinde yazılmış olan katarda değişkenler ve komutlar yakalanıp çalıştırılmaz.
``(Ters Tırnak)=>Ters tırnak içerisinde yazılmış olan katarda yer alan değişkenler ve komutlar yakalanır ve çalıştırılır.


Aritmetik Operatörler
Kabukta aritmetik işlemler “let” komutuyla yapılır.
“+” ”-” ”\*” “/” işaretleri sırasıyla toplama,çıkarma,çarpma ,bölme işlemleri için kullanılır.Çarpma işlemi için ters bölü işaretinin kullanılmasının sebebi bashin “ * “ özel karakter olarak algılamasından kaynaklandığı içindir.
”%” bölümden kalanı bulmak içindir.
- + ve — teker teker sayiyi azaltmak için kullanılır.
- << >> işleçleri sola ve sağa işlecin sağındaki sayı kadar kaydırma için kullanılır(Örnek:üzerinde işlem yapılan sayıyı ikinin üsleriyle çarpma veya bölmeye karşılık gelir)
- & | bunlarda bildiğimiz mantık operatörlerimizdir.Sırasıyla “Ve” ve “Veya” demektir.

Döngüler ve Koşullar
Burda da “if” koşulu vardır ama burda kullanımı daha farklıdır.Köşeli parantez ve koşul bitişi için “fi” kullanılır.
İf kullanılırken bazı parametreler bize çok yardımcı olur.Bunlar şu şekildedir:
- eq =>eşittir
- -lt =>; küçüktür.
- -gt =>; büyüktür
- -ge =>; büyük eşittir
- -le =>; küçük eşittir
Bunu hemen ufak bir örnekle açıklayalım.

Örnekte kullanmışken bu $1 ve $2 nedir açıklayalım hemen.Bunlar biz dosyamızı çalıştırırken dosyamıza parametre göndermemizi sağlar.$1 ilk parametre $2 de ikinci paremetremizdir.
İf ve while yapısındaki durumlar test komutu ile kullanılmaktadır.
“test ifade” biçiminde kullanılmaktadır.
İfade değerleri de bunlardır:
- f dosya =>Dosya varsa ve türü dosya ise doğrudur.
- -d dosya => Dosya varsa ve türü dizin ise doğrudur.
- -s dosya => Dosya varsa ve boş değilse doğrudur.
- -w dosya => Dosya varsa ve yazılabilir ise doğrudur.
- -x dosya => Dosya varsa ve çalıştırılabilir ise doğrudur.
- -O dosya => Dosya varsa ve sahibi geçerli kullanıcı ise doğrudur.
Kullanımı da test [ ifade dosya ] şeklindedir.Burda parantezlerin içinde bir boşluk bırakmaya dikkat etmelisiniz.
For Yapısı
Burdaki for yapısı aslında bizim bildiğimiz for yapısından biraz daha farklıdır.
for isim in kelime (burdaki isim değişkenimizdir)
do
komutlar
done
Burda değişkenimize kelime kümesindeki değerleri sırasıyla isim adlı değişkenimize aktarmaktadır.Kelime kümesindeki değerler bitene kadar do done arasındaki komutlar çalıştırılıcaktır.
#!/bin/bash
i=1
gunler="pazartesi sali carsamba persembe cuma cumartesi pazar"
for gun in $gunler
do
echo "$((i++)).Gün: $gun"
done
While
While döngüsünde bu durum hemen hemen aynıdır diyebiliriz.
while durum
do
komutlar
done
Case
Syntax bu şekildedir.
case $değişken ismi in
durum1)
komutlar
...
....
;;
durum2)
komutlar
...
....
;;
durum3)
komutlar
...
....
;;
*)
esac
Mantık olarak bildiğimiz case yapısıdır ama syntax olarak biraz farklılık göstermektedir.Örneğin * tüm durumlar olmadığında çalışması gerekeni belirtir yani tüm durumları kontrol eder aslında diyebiliriz.”esac” ise döngümüzü bitirmek için yazmamız gerekir.Bu şekilde havada kalabilir o yüzden hemen basit bir örnekle açıklayalım.
#!/bin/bash
while true
do
echo "ls:1"
echo "rm -rf:2"
echo "date:3"
echo "Çalıştırmak istediğiniz komutun numarasını giriniz:"
read kom
case $kom in
1)echo `ls` ;;
2)echo `rm -rf` ;;
3)echo `date` ;;
*)echo "Bu numarada komut yoktur" ;;
esac
done
Shellscript ile ilgili ilk aklıma gelenler şimdilik bu şekilde bir sonra ki yazıda devamı gelicek.Görüşmek üzere.