Bash Shell Scripting

Bash Linux Shell Bash Shell Bash Komutları Temel Scripting Bash Shell Script Shell Script Otomasyonu

Bash Nedir?

Bash bir kabuk (ing.: shell) uygulamasıdır. Adını Bourne-Again SHell kelimelerinin baş harflerinden alır.

Bash logo
Resim 1. Bash logo

Shell Nedir?

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 Nedir?

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 Pardus 21 üzerinde çalışmakta.
Resim 2. Bash shell Pardus 21 üzerinde çalışmakta.

Bash shell detaylı bilgi ve kurulum adımları, shell ayarları için tıklayınız.

Bash Shell Scripting Nedir?

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.

Shell Script Dosyası Oluşturma

Bash Shell script dosyası oluşturmak için dosyanın başına;

Kod

#!/bin/bash

yazılır. Sonrasında çalıştırılmak istenen kodlar yazılır.

Kod

#!/bin/bash

echo "Merhaba Dünya!"

Uygun bir dosya adı yazılıp uzantısı .sh olarak kaydedilir.

Script Dosyasına Çalıştırma İzni Verme

Dosya içindeki komutların çalıştırılabilmesi için dosyaya çalıştırma izni vermek gerekmektedir.

Kod

ls -lah

komutu ile dosya izinleri kontrol edilir.

Dosya izinleri kontrol ediliyor. Çalıştırma izni yok
Resim 3. Dosya izinleri kontrol ediliyor. Çalıştırma izni yok
Kod

chmod +x merhabaDünya.sh

komutu ile dosyaya çalıştırma izni verilir.

Kod

ls -lah

komutu ile dosya izinleri tekrar kontrol edilir.

Dosya izinleri kontrol ediliyor. Çalıştırma izni verildi
Resim 4. Dosya izinleri kontrol ediliyor. Çalıştırma izni verildi

Script Dosyasını Çalıştırma

Dosya içindeki komutların çalıştırmak için dosya adı yazılıp Enter tuşuna basılır.

Kod

./merhabaDünya.sh

Script çalıştırma
Resim 5. Script çalıştırma

Değişken Tanımlama

Değişken adı yazılır ve değer atama yapılır;

Kod

#!/bin/bash
name="Melih"
echo "Merhaba $name!"

surname="SAFRAN"
echo "Merhaba ${name} ${surname}!"

Değişken tanımlama ve çalıştırma
Resim 6. Değişken tanımlama ve çalıştırma

Yorum Satırı Yazma

Kod

#!/bin/bash

# Değişken tanımlanıyor
name="Melih"

# Değişken değeri ekrana yazdırılıyor
echo "Merhaba $name!"

Kullanıcıdan Değer Alma

Kod

#!/bin/bash

read -p "Lütfen adınızı giriniz: " name

echo "Merhabalar $name!"

Kullanıcıdan değer alma
Resim 7. Kullanıcıdan değer alma

Metin Değerlerini Karşılaştırma

Kod

#!/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

İfadeAçı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.
Tablo 1. Metinsel karşılaştırma ifadeleri

Sayısal Değerleri Karşılaştırma

Kod

#!/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

İfadeAçı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.
Tablo 2. Sayısal değer karşılaştırma ifadeleri

Dosya Değerlerini Karşılaştırma

Kod

#!/bin/bash

fileName="deneme.txt"

if [[ -f $fileName ]]
then
    echo "$fileName bir dosyadır."
else
    echo "$fileName dosya değildir."
fi

İfadeAçı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.
Tablo 3. Dosya değerlerini karşılaştırma ifadeleri

For Döngüsü Yazma

Kod

#!/bin/bash

for ((i = 0 ; i < 25 ; i++)); do
echo $i
done

Kod

#!/bin/bash

cities="Kırklareli Kırşehir Kırıkkale Kocaeli Konya"

for city in $cities
do
    echo "$city"
done

Kod

#!/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

While Döngüsü Yazma

Kod

#!/bin/bash

counter=1
while [[ $counter -le 10 ]]
do
    echo $counter
    ((counter++))
done

Fonksiyon Yazma

Kod

#!/bin/bash

function sayHello()
{
    echo "Merhaba Dünya!"
}

sayHello

Parametrik Fonksiyon Yazma

Kod

#!/bin/bash

function greet()
{
    echo "Merhaba, Ben $1, $2 yaşındayım!"
}

greet "Melih" 8

Fonksiyondan Değer Döndürme

Kod

#!/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"

Fonksiyondan Değer Döndürme
Resim 8. Fonksiyondan Değer Döndürme

Kaynaklar

  1. Bourne Shell , en.wikipedia.org, 30.03.2022 tarihinde alındı.
  2. Difference between Terminal, Console, Shell, and Command Line , geeksforgeeks.org, 30.03.2022 tarihinde alındı.
  3. Bash scripting cheatsheet , devhints.io, 31.07.2022 tarihinde alındı.
  4. The Only Bash Scripting Cheat Sheet That You Will Ever Need , devdojo.com, 31.07.2022 tarihinde alındı.
  5. Shell Scripting Crash Course - Beginner Level , Traversy Media, YouTube.com 31.07.2022 tarihinde alındı.

 


Beğen