Teknoloji ipuçlarını kendin uygula
İçerik
Son yazılar
Biz kimiz
Yazılım Atölyesi, adım adım teknoloji rehberleriyle kendi başına öğrenip uygulama yapmak isteyenlere yardımcı olur. Pratik ipuçları, araç önerileri ve çözümler bulacaksınız.

Bash Script Yazma Rehberi

Aynı komutları her gün elle yazıyorsan, o komutlar zaten bir script olmak istiyor. Log temizleme, yedek alma, proje kurulumu, dosya adı düzeltme... Hepsi tekrarlı. Tekrarlı olan her şey otomatikleştirilebilir.

bash script otomasyonu için yeni bir dil öğrenmen gerekmez. Terminalde bildiğin komutlar zaten yeterli. Script, o komutları sıraya dizmek ve karar verdirmekten ibaret. Aşağıda sıfırdan çalışan bir script yazacak, sonra onu güvenli hale getireceksin.

Tek şart: terminalde temel hareket edebiliyor olmak. cd, ls, cp gibi komutlar yabancıysa önce Linux terminali başlangıç rehberine göz atman işini kolaylaştırır.

İlk Scriptini Yazmak ve Çalıştırmak

Script bir metin dosyasıdır. Sihir yok. Yalnızca birkaç kural var.

Shebang, izin ve çalıştırma

Her script şu satırla başlar:

#!/usr/bin/env bash

Bu satır sisteme "bunu bash ile yorumla" der. #!/bin/bash da olur ama env kullanmak farklı sistemlerde daha taşınabilirdir.

Sonrası basit adımlar:

  1. Dosyayı oluştur: yedek.sh
  2. Shebang satırını yaz.
  3. Komutlarını alt alta ekle.
  4. İzin ver: chmod +x yedek.sh
  5. Çalıştır: ./yedek.sh

Uzantı zorunlu değil ama .sh koymak dosyayı tanımayı kolaylaştırır. Scriptlerini ~/bin klasöründe topla ve bu klasörü PATH'e ekle. Böylece her yerden isimle çağırabilirsin.

Değişkenler ve parametreler

Değişken tanımlarken eşittir işaretinin iki yanında boşluk olmaz:

KAYNAK="/home/kullanici/proje"
HEDEF="/mnt/yedek"

Kullanırken tırnak içinde ve süslü parantezle yaz: "${KAYNAK}". Tırnak, boşluk içeren dosya adlarında hayat kurtarır. Tırnaksız değişken, bash script otomasyonunda en sık görülen hata kaynağıdır.

Script'e dışarıdan veri geçebilirsin:

Komut çıktısını değişkene almak için $( ) kullan: TARIH=$(date +%F). Ters tırnak eski yöntem, artık tercih edilmiyor.

Karar ve döngü

Kontrol yapısı olmadan script sadece bir liste olur. İki temel kalıbı ezberle.

Koşul:

if [[ -d "$HEDEF" ]]; then
  echo "klasör var"
else
  mkdir -p "$HEDEF"
fi

Sık kullanılan testler:

TestAnlamı
-f dosyaDosya var mı
-d klasörKlasör var mı
-z "$x"Değişken boş mu
-n "$x"Değişken dolu mu
"$a" == "$b"Metin eşitliği
$a -gt $bSayı karşılaştırma

Döngü:

for f in *.log; do
  gzip "$f"
done

Fonksiyon yazmayı da erken öğren. Aynı üç satırı iki yerde tekrarlıyorsan fonksiyona çevir:

log() {
  echo "[$(date +%T)] $*"
}

Scripti Güvenli ve Kalıcı Hale Getirmek

Çalışan script yeterli değil. Yarın yanlış klasörde çalıştığında ne olacağını da düşünmen gerekir.

Hata yönetimi: üç satırlık sigorta

Shebang'in hemen altına şunu ekle:

set -euo pipefail

Bu satır olmadan script hatalı komuttan sonra devam eder ve yanlış iş yapar. Silme işlemi içeren scriptlerde bu tehlikelidir.

Ek olarak:

Test etme ve okunabilirlik

Scripti canlı veriyle test etme. Önce kopya klasörde dene.

Okunabilirlik için yorum satırı yaz ama "ne yaptığını" değil "neden yaptığını" anlat. Uzun sed veya grep ifadelerinin üstüne mutlaka açıklama koy; regex kalıplarını altı ay sonra kendin de çözemezsin.

Zamanlama ve paylaşma

Script hazırsa elle çağırmayı bırak.

  1. crontab -e ile zamanlanmış görev ekle.
    © 2026 Yazılım Atölyesi