Bash'in içi: ayrıştırma, performans ve taşınabilirlik
Kabuğun bir satırı nasıl ayrıştırıp çalıştırdığını, alt süreç maliyetini, POSIX sh taşınabilirliğini ve inceliklerin yol açtığı güvenlik hatalarını derinlemesine öğrenirsin.
Seviye 501 · 17 ders · 15 pratik lab
Dersler
Ayrıştırma
- Sözcüklere ayırma ve ayrıştırma: kabuk bir satırı nasıl okur
- Sözcük bölme ve IFS'nin gizli etkileri
- eval, dolaylı genişletme ve nameref
- Aritmetik bağlamda kod çalışması riski
- Kısa görev: beş şaşırtıcı satırın çıktısını önceden tahmin et ve kanıtla
Süreç modeli
- fork, exec ve alt kabuğun maliyeti
- Yerleşik komut ile dış komut: hız farkı
- Boru hattında kaybolan değişkenler ve lastpipe
- Dosya tanımlayıcıları: exec ile açmak, kopyalamak, kapatmak
- coproc ve adlı borular
- Kısa görev: yavaş bir betiği ölçerek on kat hızlandır
Taşınabilirlik
- POSIX sh ile Bash farkları ve bashizmler
- dash ve busybox sh ile sınamak
- Bash sürümleri arasındaki farklar
- Kısa görev: Bash betiğini Alpine'da çalışacak POSIX sh'ye çevir
Güvenlik incelikleri
- Ortamdan fonksiyon aktarımı ve geçmiş açıklardan dersler
- Bitirme görevi: kritik bir betiği ayrıştırma, performans ve taşınabilirlik açısından denetle
Pratik lablar
- Şaşırtıcı satırların çıktısını öngör ve kanıtla: Beş kısa komutun çıktısını çalıştırmadan yaz, ardından çalıştırıp yanıldığın satırları açılım sırasıyla açıkla.
- IFS yüzünden bozulan ayrıştırmayı düzelt: Fonksiyon içinde değiştirilen IFS'in betiğin kalanını bozduğu hatayı bul ve yerel kapsamla düzelt.
- eval'i nameref ile değiştir: Değişken adını eval ile oluşturan betiği nameref ve dolaylı açılımla güvenli biçimde yeniden yaz.
- Riskli değişkeni hangi başlangıç dosyasının atadığını bul: Giriş kabuğu ile etkileşimsiz kabuğun okuduğu dosyaları izleyerek PATH başına yazılabilir dizin ekleyen dosyayı bul ve satırı kaldır.
- Ortamdan içe aktarılan fonksiyonu tespit et: Betiğin davranışını değiştiren, ortam değişkeniyle içe aktarılmış fonksiyonu bul ve betiği temiz ortamla çalışacak şekilde sarmala.
- Aritmetik bağlamdaki kod çalıştırma açığını kapat: Kullanıcı girdisini aritmetik ifadede kullanan betiğin komut çalıştırmaya zorlanabildiğini göster ve girdiyi doğrulayarak kapat.
- Döngüdeki gereksiz alt kabukları kaldır: Her yinelemede dış komut çağıran döngüyü yerleşik komutlar ve parametre açılımıyla yeniden yaz ve hız farkını ölç.
- Yavaş betiği ölç ve on kat hızlandır: Büyük dosyayı satır satır dış komutlarla işleyen betiğin darboğazını bul ve aynı çıktıyı on kat hızlı üret.
- Kritik betiği ayrıştırma, hız ve taşınabilirlik açısından denetle: Yedekleme betiğindeki bir ayrıştırma hatasını, bir performans sorununu ve bir taşınabilirlik sorununu bul, düzelt ve bulgularını yaz.
- Boru hattında kaybolan değişkeni lastpipe ile koru: Boru hattının son komutunda atanan değişkenin kaybolduğu betiği lastpipe ya da yeniden düzenlemeyle düzelt.
- Adlandırılmış boruyla iki betiği konuştur: Üretici ve tüketici betikleri adlandırılmış boru üzerinden bağla ve tüketici yavaşladığında veri kaybolmadığını göster.
- exec ile dosya tanıtıcılarını yönlendir: Betiğin tüm çıktısını exec ile günlüğe yönlendir, özgün stdout'u ayrı bir tanıtıcıda saklayıp yalnızca özeti ekrana yaz.
- Betikteki bashism'leri bul: sh ile çalıştırıldığında hata veren betikte Bash'e özgü yapıları bul ve satır numaralarıyla listele.
- Bash betiğini POSIX sh'ye taşı: Dizi ve [[ ]] kullanan betiği POSIX sh'ye çevir ve dash ile busybox sh altında aynı çıktıyı verdiğini doğrula.
- Eski Bash sürümünde bozulan betiği uyumlu yap: Yeni sürüm özelliklerine dayanan betiği, eski Bash sürümlü sunucuda da çalışacak şekilde sürüm denetimi ve yedek yolla düzenle.
Kurs hakkında
Kabuğun bir satırı nasıl ayrıştırıp çalıştırdığını, alt süreç maliyetini, POSIX sh taşınabilirliğini ve inceliklerin yol açtığı güvenlik hatalarını derinlemesine öğrenirsin.
Ne öğreneceksin
- Ayrıştırma
- Süreç modeli
- Taşınabilirlik
- Güvenlik incelikleri
Ön koşullar
Aynı yolun 401 düzeyine kadar olan konularında deneyimli olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 501 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.