💻 Bash Açıklaması: En Popüler Linux Kabuğu Nasıl Çalışır?
Bash (Bourne Again Shell), Linux ve Unix tabanlı sistemlerde en yaygın kullanılan komut satırı yorumlayıcısıdır.
Bu rehber, Bash’in temel işleyişini, özelliklerini, kullanım alanlarını ve DevOps süreçlerindeki rolünü adım adım açıklıyor.
Hazırsan terminali aç, kabuğa giriş yapıyoruz 🚀
💡 Bu Rehberde Ne Öğreneceksiniz
- Bash’in ne olduğunu ve neden bu kadar popüler olduğunu anlayacaksınız.
- Komut geçmişi, değişkenler, döngüler ve koşullu ifadeler gibi temel özellikleri öğreneceksiniz.
- Zsh, Fish ve Dash gibi diğer kabuklarla farklarını göreceksiniz.
- İlk
.shbetiğinizi yazmayı öğreneceksiniz. - DevOps ve sistem yönetiminde Bash’in otomasyon gücünü keşfedeceksiniz.
🧠 Bash Nedir?
Bash (Bourne Again Shell), 1989’da Brian Fox tarafından GNU Projesi için geliştirilen bir komut yorumlayıcısıdır.
Grafik arayüze (GUI) gerek kalmadan, klavyeden girilen metin komutlarıyla sistemi yönetmeyi sağlar.
Bash iki modda kullanılabilir:
- Etkileşimli Kabuk: Komut yaz, anında cevap al.
- Betik Dili: Tekrarlayan işlemleri otomatikleştiren
.shdosyaları oluştur.
🔧 Temel Yetenekler
- Komut geçmişi (
history) - Değişken ve dizi yönetimi
- Döngüler ve koşullu ifadeler
- Giriş/çıkış yönlendirme (
>>>|) - Arka plan süreç kontrolü
🧩 Bash ve Terminal Farkı
| Bileşen | Tanım |
|---|---|
| Terminal | Komutları yazdığın arayüz (ör. GNOME Terminal, iTerm2). |
| Kabuk (Shell) | Terminalde çalışan yorumlayıcı (ör. Bash, Zsh). |
🎭 Kısa benzetme:
Terminal sahnedir, Bash ise orada repliklerini söyleyen aktördür.
⚙️ Bash’in Öne Çıkan Özellikleri
1️⃣ Komut Geçmişi
Yukarı/aşağı oklarla eski komutlara dönebilir, Ctrl + R ile arayabilirsin.
history | grep apt
Bu komut geçmişte “apt” içeren satırları listeler.
2️⃣ Otomatik Tamamlama
Tab tuşuyla komut ve dosya adlarını tamamlayarak hız kazanırsın.
3️⃣ Değişkenler ve Parametreler
selam="Merhaba"
echo "$selam, Rabisu!"
➡️ Çıktı: Merhaba, Rabisu!
4️⃣ Döngüler ve Koşullar
for dosya in *.log; do
echo "İşleniyor: $dosya"
done
Bu döngü, dizindeki tüm .log dosyalarını işler.
5️⃣ Betikleme (Scripting)
Tekrarlayan işlemleri tek dosyada toplayabilirsin:
#!/bin/bash
echo "Sistem Çalışma Süresi:"
uptime
İzin verip çalıştır:
chmod +x betik.sh
./betik.sh
🛠️ Bash Kullanım Senaryoları
| Görev | Komut | Açıklama |
|---|---|---|
| Sistem Güncelleme | sudo apt update && sudo apt upgrade -y | Paketleri tek seferde günceller. |
| Zamanlanmış Yedekleme | tar -czvf /yedek/ev_$(date +%F).tar.gz /home/kullanici | Tarihli yedek oluşturur. |
| Log Sıkıştırma | find /var/log -type f -name "*.log" -mtime +7 -exec gzip {} \; | 7 günden eski logları sıkıştırır. |
| Uzak Dağıtım | rsync -avz /app user@remote:/var/www/app | Uygulamayı uzak sunucuya kopyalar. |
⚙️ Bash ve DevOps
Bash, CI/CD süreçlerinin bel kemiğidir. Örneğin, Docker konteynerlerini temizlemek için:
docker ps -q | xargs -r docker stop
docker system prune -af
Veya GitHub Actions’da otomatik dağıtım:
- run: |
chmod +x deploy.sh
./deploy.sh
🧯 Hata Ayıklama ve Güvenli Kodlama
Betik başına şu satırı ekle:
set -euo pipefail
Seçenek Açıklama
-e Komut hatası olursa scripti durdurur.
-u Tanımlanmamış değişkeni hata sayar.
-o pipefail Pipe içinde hata olursa süreci sonlandırır.
Scripti debug etmek için:
bash -x betik.sh
❓ Sıkça Sorulan Sorular
1. Bash neden hâlâ bu kadar yaygın?
Çünkü POSIX uyumlu, taşınabilir ve tüm Linux dağıtımlarında varsayılan shell.
2. “command not found” hatası neden olur?
Komut yanlış yazılmış ya da sistemde yüklü değildir. which komut_adi ile varlığını kontrol et, gerekirse sudo apt install ile yükle.
3. Bash değişkenlerinin kapsamı nasıl belirlenir?
Varsayılan olarak globaltir. Fonksiyon içinde local anahtarını, dışa aktarmak için export kullan.
4. Bash script’leri nasıl daha güvenli yazılır?
set -euo pipefail ile hataları yakala, bash -x ile adım adım izle.
5. Bash yalnızca Linux’ta mı çalışır?
Hayır. Bash, macOS (Catalina öncesi), Windows (WSL) ve Unix türevlerinde de çalışır.
🔎 Bash vs Diğer Kabuklar
| Kabuk | Kullanım Alanı | Avantaj |
|---|---|---|
| sh | Eski sistemler | POSIX uyumlu, basit |
| bash | Genel amaçlı | Yaygın, güçlü |
| zsh | Geliştiriciler | Kişiselleştirilebilir |
| fish | Yeni başlayanlar | Modern, kullanıcı dostu |
| dash | Sistem başlatma | Çok hızlı ve hafif |
📘 Bash Hızlı Referans
| Görev | Komut | Açıklama |
|---|---|---|
| Dizin yolunu yazdır | pwd | Şu anki konumu gösterir. |
| Dosyaları listele | ls -lh | Detaylı ve okunabilir liste. |
| Dosya oluştur | touch dosya.txt | Boş bir dosya oluşturur. |
| Metin ekle | echo "metin" >> dosya.txt | Dosya sonuna metin ekler. |
| Kullanıcı girişi al | read -p "Ad: " name | Girişi değişkene (name) atar. |
🌟 Sonuç
Bash, Linux dünyasının omurgasıdır. İster sistem yöneticisi ol, ister geliştirici — otomasyonun temeli Bash’tir. Komut zincirleri, koşullar, süreç yönetimi ve CI/CD entegrasyonu ile her sunucuda aynı gücü sana verir.
💬 Şimdi sen de kendi backup.sh ya da deploy.sh betiğini yaz, ve bu gücü Rabisu Bulut sunucularında test et! ☁️