- Katılım
- 13 Kas 2020
- Konular
- 2,005
- Mesajlar
- 4,336
- Çözümler
- 7
- Tepkime puanı
- 948
- Puanları
- 188
- Konum
- Bursa
Bash script, Unix’de mevcut olan en popüler programlama araçlarından biridir. Açılımı Bourne Again Shell‘dir. Bütün Linux kullanıcıları veya Sistem Yöneticileri için güçlü bir araçtır. Bash script nedir öğrendiğinize göre sırada nasıl kullanılacağı var.
Unix’in iki adet büyük kabuk kategorisi vardır:
Bash script neredeyse bütün Linux dağıtımlarında bulunur ve ayrı bir kuruluma ihtiyaç duymaz. Aşağıdaki komutlar mevcut kabukları kontrol edebilirsiniz:
cat /etc/shells
Sonuç aşağıdaki gibi olacaktır:
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
WordPress Hosting planlarımızla bireysel veya işletmelere yönelik web siteleri açabilirsiniz. Üstelik Ücretsiz SSL sertifikası dâhildir!
Basit komut seçenekleriyle başlamak için bash için mevcut olan kılavuz sayfalarına göz atabilirsiniz:
man bash
Sırada ise bir .sh dosyası oluşturmak var. Bunun için VIM Editor‘ü kullanacaksınız. Bir dosya oluşturmak için bu komutu kullanın:
vim ornekFonksiyon.sh
Bundan sonra ise oluşturduğunuz .sh dosyasına yönlendirilecek ve dosyayı düzenleyebileceksiniz.
Bu size Bash komutlarına ve kullanımlarına dair kapsamlı bir sonuç sağlayacaktır. Bütün bash scriptleri aşağıdaki satırla başlamalıdır:
#!/bin/bash
Aşağıdaki komut bash script’inin konumunu görüntüleyecektir.
which bash
Bu komutun sonucu bu olacaktır:
/bin/bash
En sık görülen bash söz dizimi ise:
fonksiyon fonksiyonAdi {
ilk komut
ikinci komut
}
Bu ayrıca bu şekilde de yazılabilir:
fonksiyonAdi (){
ilk komut
ikinci komut
}
Tek bir satırdaysa bu halde olacaktır:
fonksiyonAdi() { ilk komut; ikinci komut; }
caca
Bu türden bir fonksiyonun örneği ise aşağıdaki gibidir. Bu komutta önce bir dizin oluşturulur ve daha sonra ise konum yeni dizinle değiştirilir:
ornekFonksiyon () {
mkdir -p $1
cd $1
}
$1 komut satırı bağımsız giriş değişkenlerini temsil eder. Bash komut içinde dinamik girişler yaratabilir. Bu fonksiyonu doğrulamak için çalıştırmanız gereken komutsa bu olacaktır:
ornekFonksiyon Dizin
Burada Dizin oluşturulacak olan geçerli bir dizin adıdır. Eğer mevcut çalışan dizini pwd komutunu kullanarak kontrol ederseniz yeni oluşturulan Dizin adlı dizinde çalıştığınızı göreceksiniz.
Benzer olarak sıkça kullanılan herhangi bir komut bir bash fonksiyonu olarak eklenebilir.
Unutmayın, VIM Editor ile .sh dosyanızı düzenlemeyi bitirdiğinizde ESC tuşuna basarak komut moduna girebilir ve :wq yazarak kaydedip çıkabilirsiniz.
#!/bin/bash
testfunction(){
echo "Ilk fonksiyonum"
}
testfunction
Eğer bu scripti testFunction.sh olarak kaydeder ve ./testFunction.sh olarak çalıştırırsanız sonucu aşağıdaki olarak görebilirsiniz:
Ilk fonksiyonum
Echo sonucu konsolda gösterir. Eğer fonksiyon tanımının yerini çağrıyla değiştirirseniz hata oluşacaktır. Aşağıdaki script size hata verecektir:
#!/bin/bash
testfunction
testfunction(){
echo "My Ilk fonksiyonum"
}
Bu yüzden ilk önce fonksiyonu tanımlamanız ve daha sonraysa çalıştırmanız gerekmektedir.
Bash fonksiyonu herhangi bir sayıda parametre kabul edebilir. Aşağıdaki örnek iki parametreyi kabul edecektir:
#!/bin/bash
testfunction(){
echo $1
echo $2
}
testfunction "Merhaba" "Dünya"
Ayrıca aşağıdaki interaktif girişi kullanabilir ve bash fonksiyonlarını gerçekleştirebilirsiniz. Bunun bir örneği aşağıdaki gibidir:
#!/bin/bash
addition(){
sum=$(($1+$2))
return $sum
}
read -p "Bir rakam girin: " int1
read -p "Bir rakam girin: " int2
add $int1 $int2
echo "Sonuc : " $?
Yukarıdaki örnekteki toplama değeri değişken bir sonuca atanmıştır ve bu fonksiyondan dönecektir. Interaktif giriş ise iki rakam için de read kullanarak elde edilir. Son olarak sonuçsa $? kullanılarak verilir. $?, fonksiyondan dönüş değerini $sum depolar.
Bash fonksiyonları daima tek bir değer verir.
Dosya içinde # sembolünü ekleyerek not bırakabilirsiniz.
Bash scriptleri aşağıdakileri desteklemektedir:
#!/bin/bash
isvalid=true
count=1
while [ $isvalid ]
do
echo $count
if [ $count -eq 5 ];
then
break
fi
((count++))
done
Yukarıdaki örnek while ve if ifadelerini kullanır. Bu örnekte if koşul ifadesi kontrol edilip çıkış yapılmadan önce loop döngüsünü 5 defa çalıştırır.
Sonuç böyle olacaktır:
1
2
3
4
5
For döngüsü sayaçları hem artırmak, hem de azaltmak için kullanılabilir. Bu türden bir for döngüsünün örneği ise aşağıdaki gibidir:
#!/bin/bash
for (( count=10; count>0; count-- ))
do
echo -n "$count "
done
Bu for döngüsünün sonucu böyle olacaktır:
10 9 8 7 6 5 4 3 2 1
Bash’de && mantıksal VE’yi temsil ederken || mantıksal VEYA’yı temsil etmektedir.
If ifadeleriyle ayrıca Else if‘i tanımlayabilirsiniz. Bunun bir örneği aşağıdaki gibidir:
#!/bin/bash
echo "Gecerli bir rakam girin"
read n
if [ $n -eq 101 ];
then
echo "Bu ilk rakam"
elif [ $n -eq 510 ];
then
echo " Bu ikinci rakam "
elif [ $n -eq 999 ];
then
echo " Bu ucuncu rakam "
else
echo "Burada rakam yok"
fi
Aşağıdaki örnek ayrıca case ifadesi ile aşağıdaki gibi yazılabilir:
#!/bin/bash
echo " Enter a valid number"
read n
case $n in
101)
Echo " This is the first number " ;;
510)
echo " This is the second number " ;;
999)
echo " This is the third number " ;;
*)
echo " No numbers over here " ;;
esac
Case ifadelerinde ;; case aralarını temsil eder.
Unix’in iki adet büyük kabuk kategorisi vardır:
- Bourne kabuğu
- C kabuğu
- Korn kabuğu (ksh)
- Bourne kabuğu (sh)
- POSIX kabuğu (sh)
- Bourne Again kabuğu (bash)
- C shell (csh)
- TENEX (TOPS) C shell (tcsh)
Bash script neredeyse bütün Linux dağıtımlarında bulunur ve ayrı bir kuruluma ihtiyaç duymaz. Aşağıdaki komutlar mevcut kabukları kontrol edebilirsiniz:
cat /etc/shells
Sonuç aşağıdaki gibi olacaktır:
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
WordPress Hosting planlarımızla bireysel veya işletmelere yönelik web siteleri açabilirsiniz. Üstelik Ücretsiz SSL sertifikası dâhildir!
Neden Bash Script Kullanmalısınız?
Bash script ile:- Tekrarlanan görevleri ortadan kaldırabilrsiniz
- Zaman kazanabilirsiniz
- İyi yapılı, modüler ve formatlı etkinlik sırası elde edersiniz
- Fonksiyonlarla komutlara komut satırı bağımsız değişkenlerini kullanarak dinamik değerler sağlayabilirsiniz
- Karışık komutları çalışan tek bir komuta indirgeyebilirsiniz
- Oluşturulduktan sonra herkes istediği kadar çalıştırabilir. Bir kere oluşturun, istediğiniz kadar çalıştırın.
- Bash scriptleri kullanılarak mantıksal akışlar kurulabilir
- Bash fonksiyonları sunucu başlatımında veya bir zamanlanmış görev eklenerek çalıştırılabilir
- Komutlarda hata ayıklama yapılabilir
- İnteraktif kabuk komutlarına sahip olunabilir
Bash Script’ine Giriş
Başlamadan önce VPS sunucunuza SSH ile giriş yapmanız gerekmektedir. Eğer bununla ilgili sorun yaşıyorsanız bu kullanışlı rehbere göz atın.Basit komut seçenekleriyle başlamak için bash için mevcut olan kılavuz sayfalarına göz atabilirsiniz:
man bash
Sırada ise bir .sh dosyası oluşturmak var. Bunun için VIM Editor‘ü kullanacaksınız. Bir dosya oluşturmak için bu komutu kullanın:
vim ornekFonksiyon.sh
Bundan sonra ise oluşturduğunuz .sh dosyasına yönlendirilecek ve dosyayı düzenleyebileceksiniz.
Bu size Bash komutlarına ve kullanımlarına dair kapsamlı bir sonuç sağlayacaktır. Bütün bash scriptleri aşağıdaki satırla başlamalıdır:
#!/bin/bash
Aşağıdaki komut bash script’inin konumunu görüntüleyecektir.
which bash
Bu komutun sonucu bu olacaktır:
/bin/bash
En sık görülen bash söz dizimi ise:
fonksiyon fonksiyonAdi {
ilk komut
ikinci komut
}
Bu ayrıca bu şekilde de yazılabilir:
fonksiyonAdi (){
ilk komut
ikinci komut
}
Tek bir satırdaysa bu halde olacaktır:
fonksiyonAdi() { ilk komut; ikinci komut; }
caca
Bu türden bir fonksiyonun örneği ise aşağıdaki gibidir. Bu komutta önce bir dizin oluşturulur ve daha sonra ise konum yeni dizinle değiştirilir:
ornekFonksiyon () {
mkdir -p $1
cd $1
}
$1 komut satırı bağımsız giriş değişkenlerini temsil eder. Bash komut içinde dinamik girişler yaratabilir. Bu fonksiyonu doğrulamak için çalıştırmanız gereken komutsa bu olacaktır:
ornekFonksiyon Dizin
Burada Dizin oluşturulacak olan geçerli bir dizin adıdır. Eğer mevcut çalışan dizini pwd komutunu kullanarak kontrol ederseniz yeni oluşturulan Dizin adlı dizinde çalıştığınızı göreceksiniz.
Benzer olarak sıkça kullanılan herhangi bir komut bir bash fonksiyonu olarak eklenebilir.
Unutmayın, VIM Editor ile .sh dosyanızı düzenlemeyi bitirdiğinizde ESC tuşuna basarak komut moduna girebilir ve :wq yazarak kaydedip çıkabilirsiniz.
Bash Script Örnekleri
Bash fonksiyonunun en temel örneklerinden biri aşağıdaki gibidir:#!/bin/bash
testfunction(){
echo "Ilk fonksiyonum"
}
testfunction
Eğer bu scripti testFunction.sh olarak kaydeder ve ./testFunction.sh olarak çalıştırırsanız sonucu aşağıdaki olarak görebilirsiniz:
Ilk fonksiyonum
Echo sonucu konsolda gösterir. Eğer fonksiyon tanımının yerini çağrıyla değiştirirseniz hata oluşacaktır. Aşağıdaki script size hata verecektir:
#!/bin/bash
testfunction
testfunction(){
echo "My Ilk fonksiyonum"
}
Bu yüzden ilk önce fonksiyonu tanımlamanız ve daha sonraysa çalıştırmanız gerekmektedir.
Bash fonksiyonu herhangi bir sayıda parametre kabul edebilir. Aşağıdaki örnek iki parametreyi kabul edecektir:
#!/bin/bash
testfunction(){
echo $1
echo $2
}
testfunction "Merhaba" "Dünya"
Ayrıca aşağıdaki interaktif girişi kullanabilir ve bash fonksiyonlarını gerçekleştirebilirsiniz. Bunun bir örneği aşağıdaki gibidir:
#!/bin/bash
addition(){
sum=$(($1+$2))
return $sum
}
read -p "Bir rakam girin: " int1
read -p "Bir rakam girin: " int2
add $int1 $int2
echo "Sonuc : " $?
Yukarıdaki örnekteki toplama değeri değişken bir sonuca atanmıştır ve bu fonksiyondan dönecektir. Interaktif giriş ise iki rakam için de read kullanarak elde edilir. Son olarak sonuçsa $? kullanılarak verilir. $?, fonksiyondan dönüş değerini $sum depolar.
Bash fonksiyonları daima tek bir değer verir.
Dosya içinde # sembolünü ekleyerek not bırakabilirsiniz.
Bash scriptleri aşağıdakileri desteklemektedir:
- While döngüsü
- For döngüsü
- If ifadesi
- Ve mantığı
- Veya mantığı
- Else If ifadesi
- Case ifadesi
#!/bin/bash
isvalid=true
count=1
while [ $isvalid ]
do
echo $count
if [ $count -eq 5 ];
then
break
fi
((count++))
done
Yukarıdaki örnek while ve if ifadelerini kullanır. Bu örnekte if koşul ifadesi kontrol edilip çıkış yapılmadan önce loop döngüsünü 5 defa çalıştırır.
Sonuç böyle olacaktır:
1
2
3
4
5
For döngüsü sayaçları hem artırmak, hem de azaltmak için kullanılabilir. Bu türden bir for döngüsünün örneği ise aşağıdaki gibidir:
#!/bin/bash
for (( count=10; count>0; count-- ))
do
echo -n "$count "
done
Bu for döngüsünün sonucu böyle olacaktır:
10 9 8 7 6 5 4 3 2 1
Bash’de && mantıksal VE’yi temsil ederken || mantıksal VEYA’yı temsil etmektedir.
If ifadeleriyle ayrıca Else if‘i tanımlayabilirsiniz. Bunun bir örneği aşağıdaki gibidir:
#!/bin/bash
echo "Gecerli bir rakam girin"
read n
if [ $n -eq 101 ];
then
echo "Bu ilk rakam"
elif [ $n -eq 510 ];
then
echo " Bu ikinci rakam "
elif [ $n -eq 999 ];
then
echo " Bu ucuncu rakam "
else
echo "Burada rakam yok"
fi
Aşağıdaki örnek ayrıca case ifadesi ile aşağıdaki gibi yazılabilir:
#!/bin/bash
echo " Enter a valid number"
read n
case $n in
101)
Echo " This is the first number " ;;
510)
echo " This is the second number " ;;
999)
echo " This is the third number " ;;
*)
echo " No numbers over here " ;;
esac
Case ifadelerinde ;; case aralarını temsil eder.