set -euo pipefail
📌Hatalarda, tanımsız değişkenlerde ve pipe kopmalarında scripti anında durdurur.
set -x
📌Komutların çalıştırılmadan önce terminale yazdırılmasını sağlar (Kapatmak için set +x).
HEDEF="/var/www/html"
📌Eşittir (=) etrafında boşluk bırakmadan değişkene değer atar.
KULLANICI=${1:-"Misafir"}
📌Dışarıdan parametre girilmezse değişkene varsayılan olarak "Misafir" değerini atar.
if [ -d "/etc/nginx" ]; then echo "Dizin mevcut"; fi
📌Belirtilen yolun klasör olup olmadığını ve var olup olmadığını kontrol eder.
if [ -f "ayar.conf" ]; then echo "Dosya mevcut"; fi
📌Belirtilen yolun bir dosya olup olmadığını kontrol eder.
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.
for dosya in *.log; do echo "$dosya"; done
📌Belirli bir uzantıya sahip dosyaları döngüye alarak topluca işlem yapar.
while IFS= read -r satir; do echo "$satir"; done < "liste.txt"
📌Metin dosyasını boşlukları yutmadan ve karakterleri bozmadan güvenli şekilde okur.
logla() { echo "[$(date +'%F %T')] INFO: $1" >> islem.log; }
📌Tekrarlayan işlemleri modüler hale getirir ve zaman damgalı log çıktısı üretir.
read -p "Devam edilsin mi? (y/n) " CEVAP
📌Script çalışırken duraklayıp kullanıcıdan interaktif olarak bilgi veya onay alır.
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.
komut & wait $!
📌Arka plana atılan son sürecin (PID) bitmesini bekler, ardından scripti devam ettirir.
TARIH=$(date +%Y-%m-%d)
📌Bir komutun ürettiği sonucu daha sonra kullanmak üzere değişkene kaydeder.
SONUC=$(( 10 + 5 ))
📌Script içerisinde temel aritmetik hesaplamaları gerçekleştirir.
if [ $? -eq 0 ]; then echo "Başarılı"; fi
📌Bir önceki komutun hatasız (0) çalışıp çalışmadığını kontrol eder.
if [ -z "$DEGISKEN" ]; then echo "Boş"; fi
📌Değişkenin içinin boş olup olmadığını denetler.
if [ -n "$DEGISKEN" ]; then echo "Dolu"; fi
📌Değişkenin içerisinde bir değer olup olmadığını denetler.
if [ "$STR1" == "$STR2" ]; then echo "Eşit"; fi
📌İki metin değerinin birebir aynı olup olmadığını kontrol eder.
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.
if [ "$SAYI" -lt 10 ]; then echo "10'dan küçük"; fi
📌Değerin belirtilen sayıdan küçük (less than) olup olmadığını denetler.
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.
echo "Mesaj" | tee cikti.log
📌Komut sonucunu terminalde gösterirken aynı anda dosyaya kaydeder.
komut 2> hata.log
📌Sadece stderr (hata) çıktılarını dosyaya yönlendirir.
komut &> tam_cikti.log
📌Stdout ve stderr çıktılarını aynı dosyada birleştirir.
komut > /dev/null 2>&1
📌Komutun ekrana hiçbir şey basmamasını sağlar.
DIZI=("Elma" "Armut" "Muz")
📌Birden fazla değeri aynı değişkende saklar.
echo "${DIZI[@]}"
📌Bir dizideki tüm değerleri boşlukla ayırarak yazdırır.
echo "${#DIZI[@]}"
📌Dizinin içerisinde kaç adet eleman olduğunu verir.
DIZI+=("Kiraz")
📌Mevcut dizinin sonuna yeni bir eleman ekler.
echo "${METIN:0:5}"
📌Metnin sadece ilk 5 karakterini alır.
echo "${METIN/Eski/Yeni}"
📌Metin içindeki ilk eşleşen "Eski" kelimesini "Yeni" ile değiştirir.
echo "${METIN//Eski/Yeni}"
📌Metin içindeki tüm eşleşen kelimeleri değiştirir.
METIN=$(echo "$METIN" | xargs)
📌Metnin başındaki ve sonundaki gereksiz boşlukları temizler.
echo $RANDOM
📌0 ile 32767 arasında rastgele bir sayı üretir.
echo $(( RANDOM % 100 + 1 ))
📌1 ile 100 arasında rastgele bir sayı verir.
trap "echo 'Kapatılamaz!'; exit" SIGINT
📌Kullanıcı Ctrl+C yaptığında belirli bir komutu çalıştırır veya iptal eder.
TEMP=$(mktemp)
📌Sistemde benzersiz ve güvenli bir geçici dosya (temp file) oluşturur.
TEMP_DIR=$(mktemp -d)
📌Benzersiz bir geçici klasör oluşturur.
trap "rm -f $TEMP" EXIT
📌Script normal veya hatalı kapandığında geçici dosyaları temizler.
while true; do echo "Çalışıyor"; sleep 1; done
📌Belirli aralıklarla sürekli çalışan işlemler için kullanılır.
if [ "$#" -ne 2 ]; then echo "2 parametre girilmeli!"; exit 1; fi
📌Scripte gönderilen dış argüman sayısını ($#) kontrol eder.
for arg in "$@"; do echo "$arg"; done
📌Scripte gönderilen tüm argümanları sırayla işler.
if ! command -v curl &> /dev/null; then echo "curl yok"; fi
📌Bir komutun sistemde kurulu olup olmadığını güvenli şekilde denetler.
FARK=$(( $(date -d "2024-01-01" +%s) - $(date +%s) ))
📌İki tarih arasındaki farkı saniye cinsinden hesaplar.
uuidgen
📌Benzersiz bir UUID kimliği oluşturur.
sed -i '/^$/d' dosya.txt
📌Metin dosyasındaki tüm boş satırları temizler.
sed -n '5p' dosya.txt
📌Dosyanın sadece 5. satırını ekrana basar.
sed -i '1d' dosya.txt
📌Dosyanın başlığından (ilk satırından) kurtulmak için kullanılır.
sed -i 's/$/ YENIMETIN/' dosya.txt
📌Tüm satırların sonuna belirli bir metin ekler.
awk '{print $2}' dosya.txt
📌Boşluklarla ayrılmış dosyanın sadece 2. sütununu alır.
awk -F':' '{print $1}' /etc/passwd
📌İki nokta üst üste (:) ile ayrılmış verilerin ilk kısmını çeker.
cat veri.json | jq '.isim'
📌JSON çıktısındaki belirli bir anahtarı kolayca okur.
echo "$METIN" | tr '[:lower:]' '[:upper:]'
📌Metindeki tüm küçük harfleri büyük harfe dönüştürür.
echo "$METIN" | tr '[:upper:]' '[:lower:]'
📌Metindeki tüm büyük harfleri küçük harfe dönüştürür.
echo "$METIN" | tr -d 'a-z'
📌Metindeki tüm küçük harfleri tamamen siler.
stat -c %y dosya.txt
📌Dosyanın en son ne zaman düzenlendiğini gösterir.
sleep 5
📌Scripti 5 saniye boyunca duraklatır.
: <<'END' yorumlar END
📌Bash'te uzun yorum blokları oluşturmak için kullanılır.
cat <<EOF > dosya.txt
Satır 1
Satır 2
EOF
📌Script içerisinden dosyanın içine çok satırlı veri yazar.
cat -n dosya.txt
📌Dosyayı satır numaralarıyla birlikte ekrana basar.
sort dosya.txt | uniq
📌Dosyadaki tekrarlayan satırları teke düşürür.
sort dosya.txt | uniq -c
📌Hangi satırın kaç kez tekrar ettiğini sayarak gösterir.
mkdir -p /klasor1/klasor2/klasor3
📌Gerekli tüm üst klasörlerle birlikte iç içe dizinler yaratır.
md5sum dosya.txt
📌Dosyanın bütünlüğünü kontrol etmek için MD5 özetini çıkarır.
DIZI=( $(ls) )
📌Bir komutun sonucundaki her kelimeyi bir dizi elemanı yapar.
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
📌Script cron veya başka bir klasörden çalışsa bile kendi dizinini bulur.
find / -type f -size +100M
📌Sistemde 100MB'dan büyük dosyaları arar.
find . -type f -mtime -7
📌Son 1 hafta içinde güncellenmiş dosyaları listeler.
find . -type d -empty -delete
📌Sistemdeki veya dizindeki tüm boş klasörleri temizler.
tar -czvf yedek.tar.gz /klasor
📌Belirtilen klasörü sıkıştırarak tar.gz arşivi yapar.
tar -tf yedek.tar.gz
📌Sıkıştırılmış dosyanın içini çıkartmadan listeler.
ssh user@host "df -h"
📌Uzak bir sunucuya bağlanıp komut çalıştırır ve çıkar.
ssh-copy-id user@host
📌SSH anahtarınızı karşı sunucuya kopyalayarak parolasız girişi sağlar.
BOYUT=$(stat -c%s "dosya.txt")
📌Dosyanın boyutunu byte cinsinden hesaplar.
jobs -l
📌O anki terminal oturumunda arka plana atılan işlemleri gösterir.
> /var/log/syslog
📌Dosyayı silmeden içeriğini anında boşaltır (boyutunu 0 yapar).
select SECIM in "Baslat" "Durdur" "Cikis"; do echo "$SECIM secildi"; break; done
📌Kullanıcıya interaktif, numaralı bir seçim menüsü sunar.
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.
nc -z -v -w5 127.0.0.1 80
📌Belirtilen portun yanıt verip vermediğini test eder.
ln -s /gercek/yol /link/yolu
📌Bir dosyaya veya klasöre kısayol oluşturur.
readlink -f /link/yolu
📌Kısayolun asıl olarak nereyi işaret ettiğini gösterir.
openssl rand -base64 14
📌Rastgele ve güvenli bir parola/token stringi üretir.
for f in *; do mv "$f" "${f,,}"; done
📌Klasördeki tüm dosyaların adını küçük harfe çevirir.
OS=$(uname -s)
📌Sistemin Linux mu, Darwin (Mac) mi olduğunu gösterir.
time komut_ismi
📌Komutun bitmesinin ne kadar süre (real, user, sys) aldığını ölçer.
timeout 10s komut
📌Komut 10 saniye içinde bitmezse süreci zorla öldürür.
watch -n 2 ls -l
📌Belirtilen komutu her 2 saniyede bir çalıştırarak çıktıyı günceller.
du -sh * | sort -hr | head -10
📌Klasördeki en büyük 10 dosyayı/klasörü sıralar.
cat dosya1.txt dosya2.txt > birlesik.txt
📌İki veya daha fazla dosyanın içeriğini tek bir dosyada toplar.
rm -f "$0"
📌Scriptin çalışmasını bitirdikten sonra kendi dosyasını silmesini sağlar.
paste dosya1.txt dosya2.txt
📌İki dosyanın satırlarını yan yana getirerek birleştirir.
hexdump -C dosya.bin
📌Binary dosyaları okunabilir hex formatında gösterir.
nohup komut &
📌Siz terminalden çıksanız bile işlemin arka planda çalışmasını sürdürür.
cat /etc/os-release
📌Ubuntu, CentOS, Debian gibi işletim sistemi detaylarını gösterir.
echo "Metin" | base64
📌String ifadeyi base64 formatında kodlar.
echo "TWV0aW4K" | base64 -d
📌Base64 ile kodlanmış ifadeyi normal metne çevirir.
lsof -i :80
📌80 portunu dinleyen süreç ve dosyaları listeler.
taskset -c 0 ./script.sh
📌Scriptin sadece 0. CPU çekirdeğini kullanmasını zorlar.
echo -e "\e[31mKırmızı Metin\e[0m"
📌Çıktıya renk (Red) ekleyerek dikkat çekici loglar oluşturur.