31 Temmuz 2022 • 20 dakikalık okuma
Bash bir kabuk (ing.: shell) uygulamasıdır. Adını Bourne-Again SHell kelimelerinin baş harflerinden alır.
Linux işletim sisteminde çekirdek, (ing.: kernel) çalışan en alt seviye yazılımdır. Yazılımlar ve donanımlar arasındaki haberleşmeyi sağlar, donanımı yönetir ve uygulamaların çalıştırılmasından sorumludur. Kullanıcılar doğrudan donanımlar ile iletişim kuramazlar, çekirdeğe komutları göndermek ve işlem sonuçlarını kullanıcıya iletmek için ara bir uygulamaya ihtiyaç duyarlar. Bu uygulamaya kabuk (shell) adı verilir. Shell uyg,ulamaları terminal üzerinde çalışır. Örneğin; Bash , sh , zsh , ksh gibi birçok shell bulunmaktadır.
Terminal, (Tr.: uçbirim) komutların yazılarak iletildiği ve komut sonuçlarının ekrana yazdırılarak işletim sisteminin kullanılmasını sağlayan uygulamadır. Genellikle gelişmiş grafik kullanıcı arayüzü ve fare kullanılmaksızın sadece klavye ile komutların girilmesi ile kullanılan siyah ekran uygulamalarıdır.
Bash shell detaylı bilgi ve kurulum adımları, shell ayarları için tıklayınız.
Bash Shell ile kısaca Linux üzerinde terminalde komutların yazılarak işletim sisteminin kullanılması sağlayan uygulamadır. Örneğin; dosya ve klasör oluşturmak, silmek, değiştirmek, kopyalamak, taşımak, klasör içindekileri listelemek vb. Bu ve benzer işlemlerin yapılması için terminalin açılıp yapılmak istenen işlem komutlarının tek tek yazılması ve çalıştırılması gerekir. Bir işlem için çok fazla komut çalıştırılması gerekiyor ise veya bir işlem kodunun birden çok defa çalıştırılması isteniyor ise komutları elle yazıp çalıştırmak çok fazla zaman almaktadır. Bu nedenle çalışacak komutlar bir dosyaya kaydedilerek kodlar tek komut ile çalışması sağlanıp otomatize edilebilir. Bu yönteme shell scripting denilmektedir.
Bash Shell script dosyası oluşturmak için dosyanın başına;
#!/bin/bash
yazılır. Sonrasında çalıştırılmak istenen kodlar yazılır.
#!/bin/bash
echo "Merhaba Dünya!"
Uygun bir dosya adı yazılıp uzantısı .sh olarak kaydedilir.
Dosya içindeki komutların çalıştırılabilmesi için dosyaya çalıştırma izni vermek gerekmektedir.
ls -lah
komutu ile dosya izinleri kontrol edilir.
chmod +x merhabaDünya.sh
komutu ile dosyaya çalıştırma izni verilir.
ls -lah
komutu ile dosya izinleri tekrar kontrol edilir.
Dosya içindeki komutların çalıştırmak için dosya adı yazılıp Enter tuşuna basılır.
./merhabaDünya.sh
Değişken adı yazılır ve değer atama yapılır;
#!/bin/bash
name="Melih"
echo "Merhaba $name!"
surname="SAFRAN"
echo "Merhaba ${name} ${surname}!"
#!/bin/bash
# Değişken tanımlanıyor
name="Melih"
# Değişken değeri ekrana yazdırılıyor
echo "Merhaba $name!"
#!/bin/bash
read -p "Lütfen adınızı giriniz: " name
echo "Merhabalar $name!"
#!/bin/bash
read -p "Lütfen adınızı giriniz: " name
if [[ -z $name ]]
then
echo "Lütfen adınızı giriniz."
else
echo "Merhabalar $name!"
fi
İfade | Açıklama |
---|---|
[[ -v ${string} ]] | Değişken değeri dolu ise true döner. |
[[ -z ${string} ]] | Değişken değeri boş ise true döner. |
[[ -n ${string} ]] | Değişken değeri boş değil ise true döner. |
[[ ${string1} == ${string2} ]] | Değişken değerleri aynı ise true döner. |
[[ ${string1} != ${string2} ]] | Değişken değerleri farklı ise true döner. |
#!/bin/bash
read -p "Lütfen bir sayı giriniz: " number1
read -p "Lütfen bir sayı daha giriniz: " number2
if [ $number1 -eq $number2 ]
then
echo "Eşit"
elif [ $number1 -gt $number2 ]
then
echo "Sayı 1 büyük"
elif [ $number1 -lt $number2 ]
then
echo "Sayı 2 büyük"
fi
İfade | Açıklama |
---|---|
[[ ${number1} -eq ${number2} ]] | Değerler aynı ise true döner. |
[[ ${number1} -ne ${number2} ]] | Değerler farklı ise true döner. |
[[ ${number1} -lt ${number2} ]] | İlk değer küçük ise true döner. |
[[ ${number1} -le ${number2} ]] | İlk değer küçük veya eşit ise true döner. |
[[ ${number1} -gt ${number2} ]] | İlk değer büyük ise true döner. |
[[ ${number1} -ge ${number2} ]] | İlk değer büyük veya eşit ise true döner. |
#!/bin/bash
fileName="deneme.txt"
if [[ -f $fileName ]]
then
echo "$fileName bir dosyadır."
else
echo "$fileName dosya değildir."
fi
İfade | Açıklama |
---|---|
[[ -f ${fileName} ]] | Dosya ise true döner. |
[[ -d ${fileName} ]] | Dizin ise true döner. |
[[ -e ${fileName} ]] | Dizinde mevcut ise true döner. |
[[ -r ${fileName} ]] | Okuma izni var ise true döner. |
[[ -w ${fileName} ]] | Yazma izni var ise true döner. |
[[ -x ${fileName} ]] | Çalıştırma izni var ise true döner. |
[[ -s ${fileName} ]] | Dosya boyutu 0'dan büyük ise true döner. |
#!/bin/bash
for ((i = 0 ; i < 25 ; i++)); do
echo $i
done
#!/bin/bash
cities="Kırklareli Kırşehir Kırıkkale Kocaeli Konya"
for city in $cities
do
echo "$city"
done
#!/bin/bash
# Dosyalarda dönmek
files=$(ls *.txt)
for file in $files
do
echo "$file adlı dosya yedekleniyor; yedek-$file"
cp $file "yedek-$file"
done
#!/bin/bash
counter=1
while [[ $counter -le 10 ]]
do
echo $counter
((counter++))
done
#!/bin/bash
function sayHello()
{
echo "Merhaba Dünya!"
}
sayHello
#!/bin/bash
function greet()
{
echo "Merhaba, Ben $1, $2 yaşındayım!"
}
greet "Melih" 8
#!/bin/bash
function add(){
number1=$1
number2=$2
result=$((number1+number2))
echo $result
}
returnValue=$(add 77 1)
echo "add() fonksiyonundan geri dönen değer: $returnValue"