İlk Bash scriptin: tekrarlayan işleri 10 satırda otomatikleştir

Her gün aynı komutları elle yazıyorsan, onları bir scripte koy. İşte güvenli bir başlangıç iskeleti:

#!/usr/bin/env bash
set -euo pipefail   # hata olursa dur, tanımsız değişkende dur, pipe hatasını yakala

# Bir klasördeki tüm .log dosyalarını tarih damgalı bir arşive topla
KAYNAK="${1:-.}"                       # 1. argüman, yoksa bu klasör
HEDEF="arsiv_$(date +%Y%m%d).tar.gz"

say() { printf ">> %s\n" "$1"; }

say "Kaynak: $KAYNAK"
dosyalar=$(find "$KAYNAK" -maxdepth 1 -name "*.log" -type f)
if [ -z "$dosyalar" ]; then
  say "Log dosyası yok, çıkılıyor."
  exit 0
fi

tar -czf "$HEDEF" $dosyalar
say "Oluşturuldu: $HEDEF ($(du -h "$HEDEF" | cut -f1))"

Çalıştırmak için:

chmod +x topla.sh      # bir kez çalıştırılabilir yap
./topla.sh /var/log

Bilmen gereken 5 şey

  1. set -euo pipefail satırını her scriptin başına koy. Sessiz hataların önüne geçer; profesyonel scriptin işareti budur.
  2. "$değişken" her zaman çift tırnak içinde. Boşluklu dosya adları yoksa bile alışkanlık edin, baş ağrısından kurtarır.
  3. ${1:-varsayılan} argüman verilmezse varsayılanı kullanır.
  4. $(...) bir komutun çıktısını değişkene alır.
  5. Scripti çalıştırmadan önce bash -n script.sh ile söz dizimi kontrolü yapabilirsin. Daha derin denetim için shellcheck aracı (editöründe eklenti olarak da var).

Kendi otomasyon scriptlerinizi paylaşın, birbirimizden öğrenelim.