Bu çalışma materyali, bir ders kaydından derlenerek Bash script temelleri konusunda kapsamlı bir rehber sunmak amacıyla hazırlanmıştır.
Bash Script Temelleri Çalışma Materyali 📚
1. Giriş: Bash Scripting Nedir?
Bash scripting, Unix benzeri işletim sistemlerinde yaygın olarak kullanılan güçlü bir komut satırı arayüzü olan Bash'in (Bourne Again SHell) yeteneklerini kullanarak otomasyon ve görev yönetimi için komut dizileri oluşturma sürecidir. Bu scriptler, tekrarlayan görevleri otomatikleştirerek insan müdahalesini en aza indirir, operasyonel verimliliği artırır ve manuel hataları azaltır. Sistem yöneticileri, yazılım geliştiriciler ve DevOps mühendisleri için iş akışlarını optimize etmek adına kritik bir araçtır.
✅ Bash Scripting'in Önemi:
- Otomasyon: Tekrarlayan görevleri otomatikleştirir.
- Verimlilik: İş akışlarını hızlandırır ve zaman kazandırır.
- Hata Azaltma: Manuel hataları en aza indirir.
- Sistem Yönetimi: Karmaşık sistem görevlerini basitleştirir.
2. Temel Kavramlar ve Script Yapısı
Bash scriptleri, genellikle bir metin düzenleyici ile oluşturulan ve .sh uzantısıyla kaydedilen düz metin dosyalarıdır.
2.1. Shebang Satırı (#!) 💡
Her Bash scripti, yorumlayıcıyı belirten özel bir 'shebang' satırı ile başlar. Bu satır, işletim sistemine scriptin hangi yorumlayıcı (örneğin, Bash) tarafından çalıştırılması gerektiğini bildirir.
- Örnek:
#!/bin/bash
2.2. Yorum Satırları (#) ✅
Kodun okunabilirliğini ve anlaşılırlığını artırmak için yorum satırları kullanılır. Bu satırlar # karakteri ile başlar ve yorumlayıcı tarafından tamamen göz ardı edilir.
- Örnek:
# Bu bir yorum satırıdır ve script tarafından çalıştırılmaz.
2.3. Değişkenler 📚
Script içinde geçici veya kalıcı verileri depolamak için kullanılır.
- Tanımlama:
degisken_adi=deger- Örnek:
isim="Ali"
- Örnek:
- Erişim: Bir değişkenin değerine erişmek için
$işareti kullanılır.- Örnek:
echo "Merhaba, $isim!"veyaecho "Merhaba, ${isim}!"
- Örnek:
2.4. Kullanıcı Girdisi ve Çıktısı
- Girdi Almak (
read): Kullanıcıdan veri almak içinreadkomutu kullanılır.-pbayrağı ile bir istem mesajı gösterilebilir.- Örnek:
read -p "Adınızı girin: " ad
- Örnek:
- Çıktı Vermek (
echo): Ekrana veya başka bir çıktıya metin yazdırmak içinechokomutu kullanılır.- Örnek:
echo "Hoş geldiniz, $ad!"
- Örnek:
2.5. Scripti Çalıştırma 1️⃣ 2️⃣ 3️⃣
Bir Bash scriptini çalıştırmak için belirli adımlar izlenmelidir:
- Scripti Oluşturma: Metin düzenleyici ile
.shuzantılı bir dosya oluşturun (örn:ilk_script.sh). - Çalıştırma İzni Verme: Dosyaya çalıştırma izni verilmelidir.
- Komut:
chmod +x ilk_script.sh
- Komut:
- Scripti Çağırma: Scripti mevcut dizinden çağırın.
- Komut:
./ilk_script.sh
- Komut:
3. Kontrol Yapıları ve Fonksiyonlar
Bash scriptlerinde program akışını kontrol etmek ve dinamik kararlar almak için çeşitli yapılar mevcuttur.
3.1. Koşullu İfadeler
Belirli bir şartın doğru olup olmadığına bağlı olarak farklı kod bloklarının yürütülmesini sağlar.
if-elif-elseYapısı: En sık kullanılan koşullu yapıdır.- Sözdizimi:
if [ koşul ]; then # Koşul doğruysa çalışacak kod elif [ başka_koşul ]; then # Başka koşul doğruysa çalışacak kod else # Hiçbir koşul doğru değilse çalışacak kod fi - Örnek:
sayi=15 if [ $sayi -gt 10 ]; then echo "Sayı 10'dan büyüktür." elif [ $sayi -eq 10 ]; then echo "Sayı 10'a eşittir." else echo "Sayı 10'dan küçüktür." fi[ ]içindeki koşullar için yaygın operatörler:-eq(eşit),-ne(eşit değil),-gt(büyük),-ge(büyük eşit),-lt(küçük),-le(küçük eşit).
- Sözdizimi:
caseİfadesi: Birden fazla olası değeri kontrol etmek için daha okunabilir bir alternatif sunar.- Örnek:
secim="a" case $secim in a) echo "A seçeneği seçildi.";; b) echo "B seçeneği seçildi.";; *) echo "Geçersiz seçim.";; esac
- Örnek:
3.2. Döngüler
Belirli bir kod bloğunu tekrar tekrar çalıştırmak için kullanılır.
forDöngüsü: Bir dizi eleman üzerinde yineleme yapar.- Örnek (Dosya İşleme):
for dosya in *.txt; do echo "İşleniyor: $dosya" done - Örnek (Sayı Dizisi):
for i in {1..5}; do echo "Sayı: $i" done
- Örnek (Dosya İşleme):
whileDöngüsü: Belirli bir koşul doğru olduğu sürece çalışır.- Örnek (Sayaç):
sayac=0 while [ $sayac -lt 3 ]; do echo "Sayaç: $sayac" sayac=$((sayac+1)) # Sayacı artır done
- Örnek (Sayaç):
3.3. Fonksiyonlar 💡
Belirli bir görevi yerine getiren kod bloklarını gruplandırarak kodun yeniden kullanılabilirliğini, modülerliğini ve bakımını kolaylaştırır.
- Tanımlama:
function fonksiyon_adi { # Komutlar } # veya fonksiyon_adi() { # Komutlar } - Çağırma:
fonksiyon_adi arg1 arg2- Örnek:
selamla() { echo "Merhaba, $1!" # $1 ilk argümanı temsil eder } selamla "Dünya" # Çıktı: Merhaba, Dünya!
- Örnek:
4. Gelişmiş Konular ve En İyi Uygulamalar
4.1. Hata Yönetimi ve Sağlamlık ⚠️
Scriptlerin üretim ortamlarında güvenilir bir şekilde çalışması için kritik öneme sahiptir.
set -e: Bir komut başarısız olduğunda scriptin hemen sonlanmasını sağlar.set -u: Tanımlanmamış değişkenlerin kullanımını engelleyerek potansiyel hataları erken aşamada tespit eder.set -o pipefail: Boru hatlarındaki (|) herhangi bir komutun başarısız olması durumunda tüm boru hattının başarısız olmasını sağlar.
4.2. Giriş/Çıkış Yönlendirmeleri
Komutların standart çıktılarını veya hata çıktılarını dosyalara yazmak veya dosyalardan girdi almak için kullanılır.
>: Çıktıyı bir dosyaya yazar (dosya varsa üzerine yazar).- Örnek:
ls > dosya_listesi.txt
- Örnek:
>>: Çıktıyı bir dosyanın sonuna ekler.- Örnek:
echo "Yeni satır" >> dosya_listesi.txt
- Örnek:
<: Bir dosyadan girdi okur.- Örnek:
while read satir; do echo "Okunan: $satir"; done < girdi.txt
- Örnek:
2>: Hata çıktılarını (stderr) yönlendirir.- Örnek:
komut_hatali 2> hata_log.txt
- Örnek:
&>veya2>&1: Hem standart çıktıyı hem de hata çıktısını aynı yere yönlendirir.- Örnek:
komut_calisir &> tum_ciktilar.txt
- Örnek:
4.3. Borular (|)
Bir komutun standart çıktısını başka bir komutun standart girdisi olarak yönlendirmek için kullanılır. Bu, komutların zincirleme çalışmasını ve veri akışını sağlar.
- Örnek:
ls -l | grep ".txt"(Dizindeki.txtuzantılı dosyaları listeler.)
4.4. Düzenli İfadeler (Regex) 📊
Metin desenlerini eşleştirmek, aramak ve işlemek için güçlü bir araçtır. grep, sed, awk gibi komutlarla birlikte kullanılarak karmaşık metin manipülasyonları yapılabilir.
grep: Metin içinde desen arar.- Örnek:
grep "hata" log.txt
- Örnek:
sed: Metin akışını düzenler (bul ve değiştir).- Örnek:
sed 's/eski/yeni/g' dosya.txt
- Örnek:
awk: Metin dosyalarını satır ve sütun bazında işler.- Örnek:
awk '{print $1}' dosya.txt(Her satırın ilk sütununu yazdırır.)
- Örnek:
4.5. En İyi Uygulamalar 💡
- Okunabilirlik: Tutarlı girintileme, açıklayıcı değişken ve fonksiyon adları kullanın.
- Yorumlar: Yeterli ve açıklayıcı yorum satırları ekleyin.
- Güvenlik: Kullanıcı girdilerini her zaman doğrulayın ve özel karakterlerden arındırın. Ayrıcalıklı komutları dikkatli kullanın.
- Hata Mesajları ve Loglama: Hata mesajlarını ve logları uygun şekilde yöneterek sorun giderme süreçlerini kolaylaştırın.
5. Sonuç
Bash scripting, Unix benzeri sistemlerde otomasyon, sistem yönetimi ve veri işleme görevleri için vazgeçilmez ve güçlü bir araçtır. Bu materyalde, Bash scriptlerinin temel yapısı, shebang kullanımı, değişken tanımlama, girdi/çıktı işlemleri gibi temel kavramlar ele alınmıştır. Ayrıca, koşullu ifadeler, döngüler ve fonksiyonlar gibi kontrol yapıları ile scriptlerin mantıksal akışının nasıl yönetildiği açıklanmıştır. Hata yönetimi mekanizmaları, giriş/çıkış yönlendirmeleri, borular ve düzenli ifadeler gibi gelişmiş konulara değinilerek, daha karmaşık, güvenilir ve verimli scriptler oluşturma yöntemleri sunulmuştur. Bash scripting becerileri, birçok profesyonel için iş akışlarını optimize eden, tekrarlayan görevleri basitleştiren ve genel verimliliği artıran kritik bir yetkinliktir. Bu temelleri anlamak, ileri düzey sistem otomasyonu yeteneklerinin kapısını açar.








