Merhabalar ;
arkadaşlar bu konumuzda Bash Scripting Programlama hakkında bilgiler aktaracağım anlatıma geçelim
= Bash Scripting Nedir ? =
Bash Linux işletim sistemleri için yazılmış komut satırı olarak adlandırılmaktadır
= Linux İşletim Sisteminde en çok kullanılan Bash Scriptingler=
Sh
Açılımı Bourne Shell olarak adlandırılır İlk linux komut kabuğudur
Ksh
Açılımı Korn Shell olarak adlandırılır Sh uyumludur ve bir den fazla ek programlama özelliği bulunan bir kabuktur
Csh
Açılmı C shell olarak adlandırılır C diline benzer bir programlama yapısı vardır En çok yazılımcı veya programcılar tarafından tercih edilmektedir
Tcsh
Csh scriptinin biraz geliştirilmiş kısmıdır
Bash
Açılım olarak bourne again shell olararak adlandırılır Kullanım kolaylığı olarak eniyileri ve tercih edilenlerde ilk sırada yer alır
=Çekirdek Kernel Nedir ?=
Çekirdek kullanıcılar tarafından girilen komutları kabuk tarafından yorumlayıp işleme almasına denilmektedir ve kabuk çekirdek aynı anda çalışıp işlem yapmaktadırlar
=Komutlar veya Kodlar Nedir ? =
Komutlar bilindiği üzere sistem tarafına gönderdiğimiz talimatlar olarak adlandırılmaktadır , Silme , kopyalama , taşıma gibi özel komutlar yer almaktadır
= Dosya Uzantısı Nedir ?
Bash Scripting programlamada Dosya uzantısı ".sh" olarak adlandırılır fakat böyle olmamakla birlikte istediğimiz uzantıları yapabilme gibi bir yetkimiz bulunmaktadır
=Standart Girdi Çıktı Mantığı =
Linux işletim sisteminde başarılı şekilde komut çalıştırmanın mantığı ekrana yazılan değerler standart çıktı olarak adlandırılır Standart gidiler ise klavye üzerinden yazdığımız komutlar olarak adlandırılmaktadır
= Standart Girdi Çıktılar İçin Komutlar =
Öncelik ile bulunduğumuz dizindeki dosyaları listelemek için kullanılan komut ile başlayalım
$ls -all
Komutu ile dizinimizde bulunan dosyaları listemekteyiz
Standart çıktımızı bir dosyaya yönlendirmek için kullandığımız komuta geçelim
$echo "TurkHackTeam" > deneme.txt
Komutu ile dosyaya yönlendirme işlemimizi tamamlamış bulunmaktayız
Standart çıkmızda bulunan dosyasının içine metin yazmak için kullandığımız komut
$echo "TurkHackTeam" >> deneme.txt
Komutu ile dosyamızın içeriğine yazı yazdırmaktayız
Şimdi ise hata mesajını dosyaya nasıl yönlendiririz komutumuz geçelim
$lss -al 2>deneme.txt
Hem çıktılarda hemde girdilerde bulunan hataları dosyaya yönlendirmek için kullandığımız komut
$lss -al >deneme.txt 2>&1
= Global Değişkenler =
Bash Scripting Programlamada bazı global değişkenler yer almaktadırlar bunlar
$echo $USER
$echo $HOSTNAME
$echo $GDMSESSİON
Bu komutların tamamını görüntülemek için komut satırına
Yazmamız yeterli olacaktır
= Değişkenlerin Kullanımı =
Bir değişkene değişken ataması sistem tarafından yapılmaktadır .Değişkenler alfabetik veya numaralardan oluşabilmektedirler fakat değişkenler matematiksel değerler ile başlaması imkansızdır bunların dışında değişkenlerin içinde özel karakterler yer alabilir "_ - * ! ' " ve benzeri gibi ve bu değişkenlere değer atamaları "=" işareti ile yapılmaktadır
Ekrana mesaj yazdırmak için kullanılan komutumuz
$mesaj= "Turkhackteam"
Ekrana Turkhackteam Merhaba yazısı yazdırmamız için kullandığımız komut
$echo $mesaj
TurkHackTeam
$echo Merhaba $mesaj
Merhaba TurkHackTeam
Kısa yoldan anlatmak gerekir ise
$echo "Merhaba TurkHackTeam"
Merhaba TurkHackTeam
Şeklinde kullanımı yer almaktadır
= Aritmetik işlemler =
Bash Scriptingde matematik işlemlerde önemli bir sınırlamalar yer almaktadır Tam sayı dışında matematik değişkenler kullanmak için kolaylık sağlayan "awk" ve "bc" komutu kullanılmaktadır aritmatik işlemler için ise "eval" komutu veya "let" komutu kullanmaktayız kullanımı aşağıda olduğu gibidir
$let "degisken" = "TurkHackTeam"
Örnek olarak iki sayıyı çarpıp yazdıralım
$let "carpim=1*1"
$echo $carpim
sonuc = 1
Aritmatik değişkenlerin tanımlama diğer yolu olarak typeset komutu kullanılmaktadır örnek aşağıda olduğu gibidir
$ typeset -i sonuc (sonuc degiskeni bir dogal sayi icerecek)
$ a=1 ; b=1 (iki komutu ayirmak icin ; kullanilabilir)
$ sonuc=a*b
$ echo $sonuc
1
= Döngüler =
Döngülerde While ve for komutları kullanılmaktadır
= While Do Döngüsü =
While anahtar kelime olarak adlandırılır ve önce koşulu sağlayıp sağlamadığını bakılır bu komutun sonunda ise done komutu kullanılır
while koşul
do
komutlar
done
while döngüsü if for ile birlikte kullanılmaktadırlar örnek olarak 1 den 100 kadar sayan sayıları yazdıralım
#!/bin/bash
deger=0
while [ $deger -lt 100 ]
do
deger=$((deger+1))
echo $deger
done
= For Do döngüsü =
For do dahilinde bulunan tüm değerlere sırayla erişim sağlar kullanımı aşağıda olduğu gibidir
for degisken in deger deger
do
komutlar
done
Örnek olarak ekrana bir dizi tanımlayalım T U R K Şeklinde Turkhackteam değişkenine kopyalayıp döngünün bilgilerini ekrana yazdıralım
for T U R K
do
echo$ TurkHackTeam
done
= Komutların Anlamları =
-gt = Büyük demektir
- lt = Küçük demektir
-ge = Büyük Eşittir demektir
-le = Küçük Eşittir demektir
-ne = Eşit değil demektir
-eq = Eşittir demektir
-s = Dosya boş değildir
-f = Dosya var
-w = dosya yazılabilir
-r = dosya yazılabilir
-h = sembolik bağlantı demektir
-b = blok aygıtı demektir
-c =karakter aygıtı demektir
-! = değil demektir
-a = ve demektir
-o = veya demektir
- lt = Küçük demektir
-ge = Büyük Eşittir demektir
-le = Küçük Eşittir demektir
-ne = Eşit değil demektir
-eq = Eşittir demektir
-s = Dosya boş değildir
-f = Dosya var
-w = dosya yazılabilir
-r = dosya yazılabilir
-h = sembolik bağlantı demektir
-b = blok aygıtı demektir
-c =karakter aygıtı demektir
-! = değil demektir
-a = ve demektir
-o = veya demektir
= Örnek Programlama =
Örnek 1 = yazılan sayının tek basamaklı veya çift basamaklı olup olmadığını hesaplayan programı yazalım
#!/bin/bash
echo "0 ile 30 arası bir sayı seçiniz"
read sec
if [ $sec - It 10]
then
echo "Sayı tek basamaklıdır"
else
echo "Sayı çift basamaklıdır"
fi
Örnek 2 = 3 adet değişken tanımlayalım 1 e basınca ekranı temizlesin 2 basınca çalışan sistemleri görüntülesin 3 basınca ise dizindeki dosyaları bizlere sıralasın
#!/bin/bash
clear
echo "1. Ekranı Temizle"
echo "2. Sistemde olanları görüntüle"
echo "3. Dizinde bulunan dosyaları görüntüle"
echo -n "Seçeneği giriniz ";
read secenek
case $secenek in
1)
clear
;;
2)
w
;;
ls- al
;;
*)
echo Hatali seçenek girdiniz
esac