
Linux'ta Bash Script Yazma: Temel Otomasyon Rehberi
Bash script ile Linux görevlerini nasıl otomatize edersiniz? Değişkenler, koşullar, döngüler ve fonksiyonlar ile temel bash scripting öğrenin.
Linux'ta Bash Script Yazma: Temel Otomasyon Rehberi
Bash script, Linux sunuculardaki tekrarlayan görevleri otomatize etmenin en pratik yoludur. Yedekleme, log temizleme, toplu dosya işleme veya sunucu kurulumu gibi işlemleri bash script ile otomatize edebilirsiniz. Bu rehberde bash scripting'in temellerini öğreneceksiniz.
İlk Bash Script
Script Dosyası Oluşturma
nano ilk-script.sh
Script içeriği:
#!/bin/bash
# Bu bir yorum satırıdır
# Tarih: 2026
echo "Merhaba Dünya!"
echo "Bugünün tarihi: $(date)"
echo "Çalışan kullanıcı: $(whoami)"
Çalıştırma İzni ve Çalıştırma
chmod +x ilk-script.sh
./ilk-script.sh
Shebang Satırı
#!/bin/bash # Bash ile çalıştır
#!/usr/bin/env bash # PATH'ta bulunan bash ile çalıştır
#!/bin/sh # POSIX shell ile (daha uyumlu ama daha az özellik)
Değişkenler
#!/bin/bash
# Değişken tanımlama (= etrafında boşluk OLMAMALI)
ISIM="Büyükweb"
YAS=5
SIMDIKI_DIZIN=$(pwd) # Komut çıktısını değişkene ata
# Değişken kullanma
echo "Hoşgeldiniz, $ISIM!"
echo "Dizin: ${SIMDIKI_DIZIN}" # Süslü parantez ile daha güvenli
# Sistem değişkenleri
echo "Kullanıcı: $USER"
echo "Ev dizini: $HOME"
echo "PATH: $PATH"
Komut Satırı Argümanları
#!/bin/bash
echo "Script adı: $0"
echo "Birinci argüman: $1"
echo "İkinci argüman: $2"
echo "Tüm argümanlar: $@"
echo "Argüman sayısı: $#"
# Kullanım
# ./script.sh argüman1 argüman2
Koşullu İfadeler
if-else
#!/bin/bash
SAYI=10
if [ $SAYI -gt 5 ]; then
echo "Sayı 5'ten büyük"
elif [ $SAYI -eq 5 ]; then
echo "Sayı 5'e eşit"
else
echo "Sayı 5'ten küçük"
fi
Karşılaştırma Operatörleri
| Operatör | Anlam |
|---|---|
| -eq | Eşit |
| -ne | Eşit değil |
| -gt | Büyüktür |
| -lt | Küçüktür |
| -ge | Büyük veya eşit |
| -le | Küçük veya eşit |
String karşılaştırma:
| Operatör | Anlam |
|---|---|
| = veya == | Eşit |
| != | Eşit değil |
| -z | Boş string |
| -n | Boş olmayan string |
Dosya Kontrolü
DOSYA="/etc/nginx/nginx.conf"
if [ -f "$DOSYA" ]; then
echo "Dosya mevcut"
fi
if [ -d "/var/www" ]; then
echo "Dizin mevcut"
fi
if [ -r "$DOSYA" ]; then
echo "Dosya okunabilir"
fi
Dosya test operatörleri: -f (dosya), -d (dizin), -e (var mı), -r (okunabilir), -w (yazılabilir), -x (çalıştırılabilir)
Döngüler
for Döngüsü
#!/bin/bash
# Dizi üzerinde döngü
for ISIM in Ali Veli Ayşe; do
echo "Merhaba, $ISIM!"
done
# Sayı aralığı
for i in {1..5}; do
echo "Sayı: $i"
done
# C stili for döngüsü
for ((i=1; i<=10; i++)); do
echo "$i"
done
# Dosyalar üzerinde döngü
for DOSYA in /var/log/*.log; do
echo "Log dosyası: $DOSYA"
done
while Döngüsü
#!/bin/bash
SAYAC=1
while [ $SAYAC -le 5 ]; do
echo "Sayaç: $SAYAC"
((SAYAC++))
done
# Dosyayı satır satır oku
while IFS= read -r SATIR; do
echo "Satır: $SATIR"
done < /etc/hosts
Fonksiyonlar
#!/bin/bash
# Fonksiyon tanımlama
selamlama() {
local ISIM=$1 # Lokal değişken
echo "Merhaba, $ISIM!"
}
# Fonksiyon çağırma
selamlama "Dünya"
selamlama "Büyükweb"
# Değer döndüren fonksiyon
toplam() {
local SONUC=$(($1 + $2))
echo $SONUC # Return değeri echo ile
}
SONUC=$(toplam 5 3)
echo "Toplam: $SONUC"
Hata Yönetimi
#!/bin/bash
# Script herhangi bir hata durumunda dur
set -e
# Tanımsız değişken kullanımını engelle
set -u
# Pipe hatalarını yakala
set -o pipefail
# Hata ayıklama modu (her komutu yazdır)
# set -x
# Hata kodu kontrol
komut || { echo "Komut başarısız oldu!"; exit 1; }
# Trap ile çıkışta temizlik
temizlik() {
echo "Script sonlandırılıyor, temizlik yapılıyor..."
rm -f /tmp/gecici-dosya.tmp
}
trap temizlik EXIT
Pratik Script Örneği: Otomatik Yedekleme
#!/bin/bash
# Otomatik yedekleme scripti
# Ayarlar
KAYNAK="/home/kullanici/public_html"
HEDEF="/home/kullanici/yedekler"
TARIH=$(date +%Y%m%d_%H%M%S)
YEDEK_ADI="yedek_${TARIH}.tar.gz"
# Hedef dizin yoksa oluştur
mkdir -p "$HEDEF"
# Yedek al
echo "Yedekleme başlıyor: $KAYNAK"
tar -czf "${HEDEF}/${YEDEK_ADI}" "$KAYNAK"
if [ $? -eq 0 ]; then
echo "Yedekleme başarılı: ${HEDEF}/${YEDEK_ADI}"
else
echo "HATA: Yedekleme başarısız!"
exit 1
fi
# 7 günden eski yedekleri sil
find "$HEDEF" -name "yedek_*.tar.gz" -mtime +7 -delete
echo "Eski yedekler temizlendi."
Büyükweb VDS ile Bash Otomasyon
Büyükweb VDS sunucular ile root SSH erişimi alarak bash scriptlerinizi cron job olarak çalıştırabilirsiniz. Yedekleme, log rotasyon ve otomatik güncelleme scriptleri için ideal ortam sağlanmaktadır.
Sonuç
Bash scripting, Linux sunucu yönetiminde verimliliği büyük ölçüde artırır. Değişkenler, koşullar, döngüler ve fonksiyonlar ile karmaşık otomasyon scriptleri yazabilirsiniz. Otomatik yedekleme, servis izleme ve log yönetimi için bash scriptleri pratik ve güvenilir çözümler sunmaktadır.
Pratik Linux Komutlari
Dosya Yonetimi
find ile kriterlere gore arama yapin. du -sh ile dizin boyutu, ncdu ile interaktif analiz. locate ile hizli dosya bulma. rsync ile dosya senkronizasyonu.
Surec Yonetimi
ps aux ile surecleri goruntuleyin. kill -9 ile sonlandirin. nohup ile arka planda calistirin. screen/tmux ile coklu terminal. systemctl ile servis yonetimi.
Metin Isleme
grep -r ile arama, sed ile toplu degisiklik, awk ile sutun cikarma. jq ile JSON isleme. tail -f ile canli log takibi. wc ile satir/kelime sayma.
Ag Komutlari
ss -tulpn ile portlar, curl ile HTTP istekleri, mtr ile traceroute, tcpdump ile trafik yakalama. dig ile DNS sorgulari. wget ile dosya indirme.
Zamanlama
crontab -e ile zamanlanmis gorevler. Yedekleme, temizlik otomasyonu. systemd timer ile gelismis zamanlama.
Disk Yonetimi
df -h ile kullanim, lsblk ile diskler. LVM ile esnek yonetim. RAID yapilandirmasi.
Sik Sorulan Sorular
Nereden baslamaliyim?
Temel komutlar (ls, cd, cp, mv, rm), editior (nano/vim), izinler (chmod) ve paket yonetimi (apt/dnf) ile baslayin.
Bash script nasil yazilir?
#!/bin/bash ile baslayin. Degiskenler, kosullar, donguler ogrenin. chmod +x ile calistirin.
Sonuc
Linux komut satiri sunucu yonetiminin vazgecilmez aracidir. Pratik yaparak becerilerinizi gelistirin.
En Sik Kullanilan Linux Komutlari
| Komut | Aciklama | Ornek |
|---|---|---|
| ls -la | Detayli dosya listesi | ls -la /var/www |
| grep -r | Icerik arama | grep -r "error" /var/log |
| find | Dosya bulma | find / -name "*.conf" |
| chmod | Izin degistirme | chmod 755 dosya.sh |
| chown | Sahiplik degistirme | chown www-data /var/www |
| systemctl | Servis yonetimi | systemctl restart nginx |
| journalctl | Log goruntuleme | journalctl -u nginx -f |
| df -h | Disk kullanimi | df -h / |
| free -m | Bellek kullanimi | free -m |
| ss -tulpn | Ag baglantilari | ss -tulpn |
Shell Scripting Temelleri
Bash script ile tekrarli gorevleri otomatiklestirin:
Yedekleme Scripti
Otomatik yedekleme ile veritabani ve dosyalarinizi duzenli yedekleyin. mysqldump ile veritabani, tar ile dosya arsivi olusturun.
Disk Izleme
Disk kullanimini izleyen ve esik degerini astiginda bildirim gonderen script yazin.
Log Analiz
Apache/Nginx loglarini analiz ederek en cok ziyaret edilen sayfalar ve supheli IP adresleri raporlayan script olusturun.
Neden Buyukweb?
Buyukweb, 2009 yilindan bu yana Turkiye'nin guvenilir hosting firmasidir. Bursa Pendc Tier 3 veri merkezinde profesyonel barindirma hizmetleri sunmaktadir.
Teknik Altyapi Avantajlari
- NVMe SSD Diskler: Geleneksel disklere gore 10x daha hizli okuma/yazma
- LiteSpeed Web Server: Apache'ye kiyasla 10x performans artisi
- CloudLinux Izolasyonu: Her hesap icin ayri kaynak limiti
- Imunify360 Guvenlik: Otomatik malware tarama ve engelleme
- DDoS Korumasi: L3, L4, L7 katmanlarinda kapsamli koruma
Musteri Memnuniyeti
5.200'den fazla aktif musteri ile %99.8 uptime garantisi sunuyoruz. 7/24 Turkce teknik destek ekibimiz tum sorulariniza hizla yanit verir. Ucretsiz site tasima hizmeti ile mevcut hosting saglayicinizdan kolayca gecis yapabilirsiniz.
Fiyat-Performans Dengesi
Rekabetci fiyatlarla profesyonel hosting altyapisi sunuyoruz. Yillik odemede ek indirimler, ucretsiz SSL sertifikasi ve gunluk otomatik yedekleme tum paketlerde standarttir.
Kolay Yonetim
cPanel ve Plesk kontrol panelleri ile web sitenizi, e-postalarinizi ve veritabaninizi tek panelden kolayca yonetin. Softaculous ile 400'den fazla uygulamayi tek tikla kurun.
Etiketler:

