---
title: 'Bash Scripting İpuçları ve Şablonlar'
url: 'https://www.emrekiran.com/komut_rehberi/bash'
markdown: 'https://www.emrekiran.com/komut_rehberi/bash.md'
lang: tr
date: '2026-10-15'
description: 'Bash Scripting İpuçları ve Şablonlar 1. Güvenli Script Başlangıcı set -euo pipefail 📌Hatalarda, tanımsız değişkenlerde ve pipe kopmalarında scripti anında durdurur. 2. Debug Modunu Aktif Etme set -x 📌Komutların çalıştırılmadan önce terminale yazdırılmasını sağlar (Kapatmak için set +x). 3. Değişk…'
---

# Bash Scripting İpuçları ve Şablonlar

## Bash Scripting İpuçları ve Şablonlar

##### 1. Güvenli Script Başlangıcı

```bash
set -euo pipefail
```

📌Hatalarda, tanımsız değişkenlerde ve pipe kopmalarında scripti anında durdurur.

##### 2. Debug Modunu Aktif Etme

```bash
set -x
```

📌Komutların çalıştırılmadan önce terminale yazdırılmasını sağlar (Kapatmak için `set +x`).

##### 3. Değişken Tanımlama

```bash
HEDEF="/var/www/html"
```

📌Eşittir (`=`) etrafında boşluk bırakmadan değişkene değer atar.

##### 4. Varsayılan Değer Atama

```bash
KULLANICI=${1:-"Misafir"}
```

📌Dışarıdan parametre girilmezse değişkene varsayılan olarak "Misafir" değerini atar.

##### 5. Dizin Kontrolü Yapma

```bash
if [ -d "/etc/nginx" ]; then echo "Dizin mevcut"; fi
```

📌Belirtilen yolun klasör olup olmadığını ve var olup olmadığını kontrol eder.

##### 6. Dosya Kontrolü Yapma

```bash
if [ -f "ayar.conf" ]; then echo "Dosya mevcut"; fi
```

📌Belirtilen yolun bir dosya olup olmadığını kontrol eder.

##### 7. Root Yetkisi Kontrolü

```bash
if [ "$EUID" -ne 0 ]; then exit 1; fi
```

📌Scriptin sadece yetkili kullanıcı (root/sudo) tarafından çalıştırılmasını zorunlu kılar.

##### 8. For Döngüsü ile Dosya İşleme

```bash
for dosya in *.log; do echo "$dosya"; done
```

📌Belirli bir uzantıya sahip dosyaları döngüye alarak topluca işlem yapar.

##### 9. Dosyayı Satır Satır Okuma (While Döngüsü)

```bash
while IFS= read -r satir; do echo "$satir"; done < "liste.txt"
```

📌Metin dosyasını boşlukları yutmadan ve karakterleri bozmadan güvenli şekilde okur.

##### 10. Fonksiyon Tanımlama ve Loglama

```bash
logla() { echo "[$(date +'%F %T')] INFO: $1" >> islem.log; }
```

📌Tekrarlayan işlemleri modüler hale getirir ve zaman damgalı log çıktısı üretir.

##### 11. Kullanıcıdan Onay Alma (Girdi Bekleme)

```bash
read -p "Devam edilsin mi? (y/n) " CEVAP
```

📌Script çalışırken duraklayıp kullanıcıdan interaktif olarak bilgi veya onay alır.

##### 12. Regex ile Girdi Doğrulama

```bash
if [[ "$CEVAP" =~ ^[Yy]$ ]]; then echo "Onaylandı"; fi
```

📌Kullanıcının girdiği cevabın büyük/küçük "Y" harfi olup olmadığını doğrular.

##### 13. Arka Plan İşlemini Bekleme (Wait)

```bash
komut & wait $!
```

📌Arka plana atılan son sürecin (PID) bitmesini bekler, ardından scripti devam ettirir.

##### 14. Komut Çıktısını Değişkene Atama

```bash
TARIH=$(date +%Y-%m-%d)
```

📌Bir komutun ürettiği sonucu daha sonra kullanmak üzere değişkene kaydeder.

##### 15. Matematiksel İşlem Yapma

```bash
SONUC=$(( 10 + 5 ))
```

📌Script içerisinde temel aritmetik hesaplamaları gerçekleştirir.

##### 16. Komutun Başarısını Kontrol Etme

```bash
if [ $? -eq 0 ]; then echo "Başarılı"; fi
```

📌Bir önceki komutun hatasız (0) çalışıp çalışmadığını kontrol eder.

##### 17. Null (Boş) Değişken Kontrolü

```bash
if [ -z "$DEGISKEN" ]; then echo "Boş"; fi
```

📌Değişkenin içinin boş olup olmadığını denetler.

##### 18. Dolu Değişken Kontrolü

```bash
if [ -n "$DEGISKEN" ]; then echo "Dolu"; fi
```

📌Değişkenin içerisinde bir değer olup olmadığını denetler.

##### 19. İki String'i Karşılaştırma

```bash
if [ "$STR1" == "$STR2" ]; then echo "Eşit"; fi
```

📌İki metin değerinin birebir aynı olup olmadığını kontrol eder.

##### 20. Sayısal Büyüklük Kontrolü

```bash
if [ "$SAYI" -gt 10 ]; then echo "10'dan büyük"; fi
```

📌Değerin belirtilen sayıdan büyük (greater than) olup olmadığını denetler.

##### 21. Sayısal Küçüklük Kontrolü

```bash
if [ "$SAYI" -lt 10 ]; then echo "10'dan küçük"; fi
```

📌Değerin belirtilen sayıdan küçük (less than) olup olmadığını denetler.

##### 22. Case-Switch Yapısı

```bash
case "$1" in start) echo "Başlıyor";; stop) echo "Duruyor";; esac
```

📌Birden fazla koşulu kontrol etmek için if-else yerine kullanılır.

##### 23. Çıktıyı Hem Ekrana Hem Dosyaya Yazma

```bash
echo "Mesaj" | tee cikti.log
```

📌Komut sonucunu terminalde gösterirken aynı anda dosyaya kaydeder.

##### 24. Sadece Hataları Loglama

```bash
komut 2> hata.log
```

📌Sadece stderr (hata) çıktılarını dosyaya yönlendirir.

##### 25. Hem Çıktıyı Hem Hatayı Loglama

```bash
komut &> tam_cikti.log
```

📌Stdout ve stderr çıktılarını aynı dosyada birleştirir.

##### 26. Çıktıyı Yok Sayma (Dev Null)

```bash
komut > /dev/null 2>&1
```

📌Komutun ekrana hiçbir şey basmamasını sağlar.

##### 27. Dizi (Array) Tanımlama

```bash
DIZI=("Elma" "Armut" "Muz")
```

📌Birden fazla değeri aynı değişkende saklar.

##### 28. Dizinin Tüm Elemanlarını Ekrana Basma

```bash
echo "${DIZI[@]}"
```

📌Bir dizideki tüm değerleri boşlukla ayırarak yazdırır.

##### 29. Dizi Uzunluğunu Bulma

```bash
echo "${#DIZI[@]}"
```

📌Dizinin içerisinde kaç adet eleman olduğunu verir.

##### 30. Diziye Yeni Eleman Ekleme

```bash
DIZI+=("Kiraz")
```

📌Mevcut dizinin sonuna yeni bir eleman ekler.

##### 31. String Kesme (Substring)

```bash
echo "${METIN:0:5}"
```

📌Metnin sadece ilk 5 karakterini alır.

##### 32. String Değiştirme (Replace)

```bash
echo "${METIN/Eski/Yeni}"
```

📌Metin içindeki ilk eşleşen "Eski" kelimesini "Yeni" ile değiştirir.

##### 33. Tüm Stringleri Değiştirme (Replace All)

```bash
echo "${METIN//Eski/Yeni}"
```

📌Metin içindeki tüm eşleşen kelimeleri değiştirir.

##### 34. Baştaki veya Sondaki Boşlukları Silme (Trim)

```bash
METIN=$(echo "$METIN" | xargs)
```

📌Metnin başındaki ve sonundaki gereksiz boşlukları temizler.

##### 35. Rastgele Sayı Üretme

```bash
echo $RANDOM
```

📌0 ile 32767 arasında rastgele bir sayı üretir.

##### 36. Belirli Bir Aralıkta Rastgele Sayı

```bash
echo $(( RANDOM % 100 + 1 ))
```

📌1 ile 100 arasında rastgele bir sayı verir.

##### 37. Trap ile Sinyal Yakalama (Ctrl+C)

```bash
trap "echo 'Kapatılamaz!'; exit" SIGINT
```

📌Kullanıcı Ctrl+C yaptığında belirli bir komutu çalıştırır veya iptal eder.

##### 38. Geçici Dosya Oluşturma

```bash
TEMP=$(mktemp)
```

📌Sistemde benzersiz ve güvenli bir geçici dosya (temp file) oluşturur.

##### 39. Geçici Klasör Oluşturma

```bash
TEMP_DIR=$(mktemp -d)
```

📌Benzersiz bir geçici klasör oluşturur.

##### 40. Script Kapanırken Temizlik Yapma

```bash
trap "rm -f $TEMP" EXIT
```

📌Script normal veya hatalı kapandığında geçici dosyaları temizler.

##### 41. Sonsuz Döngü

```bash
while true; do echo "Çalışıyor"; sleep 1; done
```

📌Belirli aralıklarla sürekli çalışan işlemler için kullanılır.

##### 42. Argüman Sayısını Kontrol Etme

```bash
if [ "$#" -ne 2 ]; then echo "2 parametre girilmeli!"; exit 1; fi
```

📌Scripte gönderilen dış argüman sayısını (`$#`) kontrol eder.

##### 43. Tüm Parametreleri İşleme

```bash
for arg in "$@"; do echo "$arg"; done
```

📌Scripte gönderilen tüm argümanları sırayla işler.

##### 44. Komut Var Mı Kontrolü

```bash
if ! command -v curl &> /dev/null; then echo "curl yok"; fi
```

📌Bir komutun sistemde kurulu olup olmadığını güvenli şekilde denetler.

##### 45. Tarih Farkı Hesaplama

```bash
FARK=$(( $(date -d "2024-01-01" +%s) - $(date +%s) ))
```

📌İki tarih arasındaki farkı saniye cinsinden hesaplar.

##### 46. UUID Üretme

```bash
uuidgen
```

📌Benzersiz bir UUID kimliği oluşturur.

##### 47. Dosyadaki Boş Satırları Silme

```bash
sed -i '/^$/d' dosya.txt
```

📌Metin dosyasındaki tüm boş satırları temizler.

##### 48. Sadece Belirli Satırı Yazdırma

```bash
sed -n '5p' dosya.txt
```

📌Dosyanın sadece 5. satırını ekrana basar.

##### 49. Metin Dosyasının İlk Satırını Silme

```bash
sed -i '1d' dosya.txt
```

📌Dosyanın başlığından (ilk satırından) kurtulmak için kullanılır.

##### 50. Satır Sonuna Metin Ekleme

```bash
sed -i 's/$/ YENIMETIN/' dosya.txt
```

📌Tüm satırların sonuna belirli bir metin ekler.

##### 51. İstenen Sütunu Yazdırma (awk)

```bash
awk '{print $2}' dosya.txt
```

📌Boşluklarla ayrılmış dosyanın sadece 2. sütununu alır.

##### 52. Ayırıcı (Delimiter) Belirterek Sütun Alma

```bash
awk -F':' '{print $1}' /etc/passwd
```

📌İki nokta üst üste (`:`) ile ayrılmış verilerin ilk kısmını çeker.

##### 53. JSON Ayrıştırma (jq)

```bash
cat veri.json | jq '.isim'
```

📌JSON çıktısındaki belirli bir anahtarı kolayca okur.

##### 54. Büyük Harfe Çevirme

```bash
echo "$METIN" | tr '[:lower:]' '[:upper:]'
```

📌Metindeki tüm küçük harfleri büyük harfe dönüştürür.

##### 55. Küçük Harfe Çevirme

```bash
echo "$METIN" | tr '[:upper:]' '[:lower:]'
```

📌Metindeki tüm büyük harfleri küçük harfe dönüştürür.

##### 56. İstenmeyen Karakterleri Silme

```bash
echo "$METIN" | tr -d 'a-z'
```

📌Metindeki tüm küçük harfleri tamamen siler.

##### 57. Dosyanın Son Değiştirilme Zamanını Alma

```bash
stat -c %y dosya.txt
```

📌Dosyanın en son ne zaman düzenlendiğini gösterir.

##### 58. Saniye Cinsinden Bekleme (Sleep)

```bash
sleep 5
```

📌Scripti 5 saniye boyunca duraklatır.

##### 59. Çok Satırlı Yorum Ekleme

```bash
: <<'END' yorumlar END
```

📌Bash'te uzun yorum blokları oluşturmak için kullanılır.

##### 60. Çok Satırlı Dosya Oluşturma (HereDoc)

```bash
cat <<EOF > dosya.txt
Satır 1
Satır 2
EOF
```

📌Script içerisinden dosyanın içine çok satırlı veri yazar.

##### 61. Satır Numarası Vererek Yazdırma

```bash
cat -n dosya.txt
```

📌Dosyayı satır numaralarıyla birlikte ekrana basar.

##### 62. Yalnızca Benzersiz Satırları Bulma

```bash
sort dosya.txt | uniq
```

📌Dosyadaki tekrarlayan satırları teke düşürür.

##### 63. Tekrarlayan Satırların Sayısını Bulma

```bash
sort dosya.txt | uniq -c
```

📌Hangi satırın kaç kez tekrar ettiğini sayarak gösterir.

##### 64. İç İçe Dizin Oluşturma

```bash
mkdir -p /klasor1/klasor2/klasor3
```

📌Gerekli tüm üst klasörlerle birlikte iç içe dizinler yaratır.

##### 65. Dosyanın Hash (MD5) Değerini Alma

```bash
md5sum dosya.txt
```

📌Dosyanın bütünlüğünü kontrol etmek için MD5 özetini çıkarır.

##### 66. Komut Çıktısını Diziye Atama

```bash
DIZI=( $(ls) )
```

📌Bir komutun sonucundaki her kelimeyi bir dizi elemanı yapar.

##### 67. Cron İçin Script Dizini Bulma

```bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
```

📌Script cron veya başka bir klasörden çalışsa bile kendi dizinini bulur.

##### 68. Belirli Boyuttan Büyük Dosyaları Bulma

```bash
find / -type f -size +100M
```

📌Sistemde 100MB'dan büyük dosyaları arar.

##### 69. Son 7 Günde Değişen Dosyaları Bulma

```bash
find . -type f -mtime -7
```

📌Son 1 hafta içinde güncellenmiş dosyaları listeler.

##### 70. Boş Klasörleri Silme

```bash
find . -type d -empty -delete
```

📌Sistemdeki veya dizindeki tüm boş klasörleri temizler.

##### 71. Bir Klasördeki Dosyaları Arşivleme

```bash
tar -czvf yedek.tar.gz /klasor
```

📌Belirtilen klasörü sıkıştırarak tar.gz arşivi yapar.

##### 72. Arşiv İçeriğini Görüntüleme

```bash
tar -tf yedek.tar.gz
```

📌Sıkıştırılmış dosyanın içini çıkartmadan listeler.

##### 73. SSH Üzerinden Komut Çalıştırma

```bash
ssh user@host "df -h"
```

📌Uzak bir sunucuya bağlanıp komut çalıştırır ve çıkar.

##### 74. Şifresiz SSH Girişi İçin Key Kopyalama

```bash
ssh-copy-id user@host
```

📌SSH anahtarınızı karşı sunucuya kopyalayarak parolasız girişi sağlar.

##### 75. Dosya Boyutu Kontrolü

```bash
BOYUT=$(stat -c%s "dosya.txt")
```

📌Dosyanın boyutunu byte cinsinden hesaplar.

##### 76. Arka Plandaki İşlemleri Listeleme

```bash
jobs -l
```

📌O anki terminal oturumunda arka plana atılan işlemleri gösterir.

##### 77. Log Dosyasını Anlık Temizleme (Truncate)

```bash
> /var/log/syslog
```

📌Dosyayı silmeden içeriğini anında boşaltır (boyutunu 0 yapar).

##### 78. Menü Oluşturma (Select)

```bash
select SECIM in "Baslat" "Durdur" "Cikis"; do echo "$SECIM secildi"; break; done
```

📌Kullanıcıya interaktif, numaralı bir seçim menüsü sunar.

##### 79. Ağ Bağlantısı Kontrolü Yapma

```bash
if ping -c 1 8.8.8.8 &> /dev/null; then echo "İnternet var"; fi
```

📌Dış ağa erişim olup olmadığını test eder.

##### 80. Port Açık Mı Kontrolü (Netcat)

```bash
nc -z -v -w5 127.0.0.1 80
```

📌Belirtilen portun yanıt verip vermediğini test eder.

##### 81. Sembolik Link Oluşturma

```bash
ln -s /gercek/yol /link/yolu
```

📌Bir dosyaya veya klasöre kısayol oluşturur.

##### 82. Mevcut Sembolik Linkin Hedefini Öğrenme

```bash
readlink -f /link/yolu
```

📌Kısayolun asıl olarak nereyi işaret ettiğini gösterir.

##### 83. Parola Üretici

```bash
openssl rand -base64 14
```

📌Rastgele ve güvenli bir parola/token stringi üretir.

##### 84. Tüm Dosya İsimlerini Küçük Harf Yapma

```bash
for f in *; do mv "$f" "${f,,}"; done
```

📌Klasördeki tüm dosyaların adını küçük harfe çevirir.

##### 85. İşletim Sistemi Türünü Öğrenme

```bash
OS=$(uname -s)
```

📌Sistemin Linux mu, Darwin (Mac) mi olduğunu gösterir.

##### 86. Komut Çalışma Süresini Ölçme

```bash
time komut_ismi
```

📌Komutun bitmesinin ne kadar süre (real, user, sys) aldığını ölçer.

##### 87. Komutu Belirli Süre Çalıştırıp Kapatma (Timeout)

```bash
timeout 10s komut
```

📌Komut 10 saniye içinde bitmezse süreci zorla öldürür.

##### 88. Watch İle Komutu Tekrarlama

```bash
watch -n 2 ls -l
```

📌Belirtilen komutu her 2 saniyede bir çalıştırarak çıktıyı günceller.

##### 89. Dizindeki En Büyük Dosyaları Bulma

```bash
du -sh * | sort -hr | head -10
```

📌Klasördeki en büyük 10 dosyayı/klasörü sıralar.

##### 90. Metin Dosyalarını Birleştirme

```bash
cat dosya1.txt dosya2.txt > birlesik.txt
```

📌İki veya daha fazla dosyanın içeriğini tek bir dosyada toplar.

##### 91. Kendi Kendini Yok Eden Script

```bash
rm -f "$0"
```

📌Scriptin çalışmasını bitirdikten sonra kendi dosyasını silmesini sağlar.

##### 92. Satır Satır Veri Birleştirme (Paste)

```bash
paste dosya1.txt dosya2.txt
```

📌İki dosyanın satırlarını yan yana getirerek birleştirir.

##### 93. Hex Çıktısı Alma

```bash
hexdump -C dosya.bin
```

📌Binary dosyaları okunabilir hex formatında gösterir.

##### 94. Terminali Kapatınca Kapanmayan Süreç (Nohup)

```bash
nohup komut &
```

📌Siz terminalden çıksanız bile işlemin arka planda çalışmasını sürdürür.

##### 95. Hangi Dağıtım Olduğunu Bulma

```bash
cat /etc/os-release
```

📌Ubuntu, CentOS, Debian gibi işletim sistemi detaylarını gösterir.

##### 96. Base64 Şifreleme

```bash
echo "Metin" | base64
```

📌String ifadeyi base64 formatında kodlar.

##### 97. Base64 Çözme

```bash
echo "TWV0aW4K" | base64 -d
```

📌Base64 ile kodlanmış ifadeyi normal metne çevirir.

##### 98. Açık Olan Dosyaları Görme (lsof)

```bash
lsof -i :80
```

📌80 portunu dinleyen süreç ve dosyaları listeler.

##### 99. Scripti Belirli CPU Core'unda Çalıştırma

```bash
taskset -c 0 ./script.sh
```

📌Scriptin sadece 0. CPU çekirdeğini kullanmasını zorlar.

##### 100. Terminal Ekranını Renklendirme

```bash
echo -e "\e[31mKırmızı Metin\e[0m"
```

📌Çıktıya renk (Red) ekleyerek dikkat çekici loglar oluşturur.

---

## Navigation

- Parent: [Komutlar](https://www.emrekiran.com/komut_rehberi.md)
- Previous: [Ansible Komut Rehberi](https://www.emrekiran.com/komut_rehberi/ansible.md)
- Next: [Netplan ve Gelişmiş Ağ Yapılandırması](https://www.emrekiran.com/komut_rehberi/netplan.md)
