Merhaba,
Bu yazının içeriğinde linux tabanlı işletim sistemlerinde kullanılan Bash komut yorumlayıcısı ve Bash script hakkında kısaca bir bilgilendirme yer almaktadır. Aynı zamanda en çok kullanılan ifadelerin yer aldığı bir not niteliğindedir.
Bash linux sistemlerde komut satırına yazılan komutların yorumlanmasını sağlayan yorumlayıcıdır.
Bash Script ise bash komutlarından oluşan çalıştırılabilir bir dosyayı ifade etmektedir. Bir çok yeteneğe sahip olan Linux komut satırı komutlarını bir arada kullanabilmek, bazende uzun zaman alan ve karmaşık komutların sıralı olarak kullanılmasıyla yapılabilen işlemlerşi kolaylaştırmak ve otomatize etmek için kullanabiliriz. Örneğin Linux sistemimiz üzerine bir sunucu kurmak veya bir paket kurup yapılandırmak istiyorsak bunu komutlar sayesinde yapmaktayız. Fakat sürekli sanal makinelerle uğraşan ve sürekli yeni makineler kuran birisiyseniz bu noktada kurulum ve konfigürasyon işlemlerinizi otomatize edebilirsiniz.
Shebang (#!)
- Programın ilk satırı önemlidir. Bu kısma (#!) shebang adı verilir. shebang ile yorumlayıcı yolu belirtilir. Aşağıdaki örnekler incelenebilir.
- #!/bin/bash
- #!/bin/sh
- #!/bin/php
Arka Plan Değişkenleri – Argüman vs.
- Yazdığımız script içerisinde tanımladığımız değişkenlerden hariç olarak arka plandada bir takım değişkenler tutulur.
- $0 : Scriptin Adı
- $1 – $9 : Komut satırından scripte verilen argümanlar. Sırasıyla
- $# : Scripte dışarıdan gönderilen toplam argüman sayısı
- $ :* Scripte dışarıdan gönderilen argümanların tamamı
Çıktı Sonucunu Değişkene Atamak
- Ters tek tırnak iiçerisine alınan komutlar belirtilen değişkene atanır. #!/bin/bash result=
ifconfig
echo Ag Bilgisi: $result
Kullanıcı Inputları
- Bilgi mesajı vermeden doğrudan giriş alıp input değişkenine atamak için;
- read input
- İnput mesajı yazdırıp, giriş için aynı satırın sonundan imleci devam ettirmek için read –p komutu kullanılabilir. Bu sayede yazım diziliminin tutarlı şekilde kalması sağlanabilir.
- Kullanıcı tarafındna girilen metnin görünmemesi için (Parola bilgisi alırken)
- read -sp
Değişkenler
- Değişkene erişmek için $ kullanılır.
- Değişken uzunluğunu almak için;
- ${#değişken_adi}
- Yalnız okunabilir değişken tanımlamak için;
- readonly isim=”hasanbaskin”
- Dizi tanımlamak için;
- sehirler(“antalya”, “bursa”, “rize”, “istanbul”)
- ${sehirler[2]} ⇒ 3.sehir bilgisine erişmek için kullanılır..
Sistem Değişkenlerine Erişmek
- env komutu ile erişilebilir olan sistem değişkenleri listelenir.
- Örnek olarak;
- $HOME
- $USER
Operatörler
Aritmatik Operatörler
- -eq : Eşittir
- -ne : Eşit Değildir
- -gt : Büyüktür
- -ge : Büyük eşittir
- -lt : Küçüktür
- -le : Küçük eşittir
Metinsel Operatörler
- = Eşittir
- != Eşit Değildir
Mantıksal Operatörler
- ! Değildir
- -a : Ve
- -o : Veya
Dosya Dizin Operatörleri
- -e : Dosya var mı ?
- -f : Dosya özel mi sıradan mı?
- -r : Dosya okunabilir mi?
- -w : Yazılabilir mi?
- -x : Çalıştırılabilir mi ?
- -d : Dosya mı dizin mi ?
Örnek Mini Scriptler
Terminal üzerinden argüman almak:
#!/bin/bash echo "Selam Dunyali" if [ "$1" = "" ]; then echo "Arguman yok !!" else echo "$1" fi
Switch-Case Yapısı:
#!/bin/bash clear echo "1.Ekrani temizle.." echo "2.Sistemdekileri goster.." echo "3.Dizindekileri göster.." echo "4)ip adresimi goster.." echo -n "Secenegi giriniz: " read secenek case $secenek in 1)clear;; 2)w;; 3)ls -la;; 4)ifconfig;; *)echo "Hatali secenek";; esac
Array – Dizi Yapısı:
#!/bin/bash digits=$((RANDOM%7)) colors=(mavi kirmizi sari turuncu siyah beyaz mor lacivert) degisken=${colors[$digits]} echo "$degisken"
Dosya Sorgulama:
#!/bin/bash if [ -f /home/hbn/Desktop/My_Codes/Bash/Kitchen/case_yapisi.sh ] then echo "dosya var" else echo "dosya yok" fi
For – Do Döngü Yapısı:
#!/bin/bash dizinlistele(){ for a in *.sh do file $a done } agaclarlistele(){ for agac in elma armut cam sogut visne do echo $agac done } echo "1.dizindeki dosya tiplerini listele.." echo "2.agaclari yazdir.." echo -n "Secenek : " read deger if [ $deger -eq 1 ] then dizinlistele fi if (($deger==2)) then agaclarlistele fi
For Döngüsü Random Sayı Üreteci:
#!/bin/bash echo -n "Bir sayi giriniz.." read sayi for ((x=1; x<=$sayi; x++)) do rastgele=$((RANDOM%100)) echo "$rastgele senin sayin dostum.." done
Temel İnput İşlemi:
#!/bin/bash echo "0 ile 20 arasinde bir sayi giriniz" read deger if [ $deger -lt 10 ] then echo "Secilen sayi tek basamakli." else echo "Secilen sayi iki basamakli." fi
While Yapısı:
#!/bin/bash deger=0 while [ $deger -lt 100 ] do deger=$((deger+1)) # (( ve )) işaretleri arasına matematiksel işlem getirilebilir. bash kabuğuna özeldir. echo $deger done
Teşekkür ederim. İyi günler dilerim..