Kabuk betikleri (Bash)
Değişkenler, koşullar, döngüler ve fonksiyonlarla Bash betikleri.
Seviye 201 · 19 ders · 18 pratik lab
Dersler
İlk betikler
- İlk betik: shebang ve çalıştırma izni: İlk betiğini yazar, ilk satırdaki shebang'in ne işe yaradığını ve betiğe çalıştırma izninin neden elle verilmesi gerektiğini anlarsın.
- Çalışmayan betiği onarmak: izin, shebang ve satır sonu: chmod, shebang ve Windows satır sonu sorunlarını sırayla kontrol ederek çalışmayan bir betiği hızla çalışır hâle getirebilirsin.
- Değişkenler ve kullanıcıdan girdi: Betikte değişken tanımlamayı, kullanıcıdan girdi almayı ve değerleri doğru biçimde tırnak içinde kullanmayı öğrenirsin.
- Argümanlar ve argüman denetimi: Betiğe komut satırından değer vermeyi ve eksik ya da hatalı argümanları baştan denetleyip anlaşılır bir hata vermeyi öğrenirsin.
- Seçenekli betikler: getopts ve kullanım mesajı: getopts ile -f ve -v gibi seçenekleri ayrıştırıp hatalı kullanımda açık bir yardım mesajı veren betik yazabilirsin.
- Kısa görev: argümanlarını denetleyen bir yedek betiği iskeleti yaz
Karar ve döngü
- Koşullar ve dosya testleri: if ile karar vermeyi, dosyanın var olup olmadığı gibi testleri yazmayı ve betiğin duruma göre farklı yol izlemesini sağlamayı öğrenirsin.
- Aritmetik ve case: sayılarla işlem yapmak, seçeneğe göre dallanmak: $(( )) ile hesap yapıp case ile komut seçeneğine göre farklı işler çalıştıran okunaklı bir betik yazabilirsin.
- Döngüler: for, while, until: for, while ve until döngüleriyle tekrarlayan işleri otomatikleştirmeyi ve hangi döngünün ne zaman uygun olduğunu öğrenirsin.
- Çıkış kodları ve hata yönetimi: Komutların çıkış kodlarını okumayı, hata olduğunda betiği güvenle durdurmayı ve kendi çıkış kodlarını döndürmeyi öğrenirsin.
- Fonksiyonlar ve yerel değişkenler: Tekrar eden kodu fonksiyonlara ayırmayı ve yerel değişkenlerle fonksiyonların birbirinin değerini bozmasını önlemeyi öğrenirsin.
- Kısa görev: servis listesini dolaşıp durumunu raporlayan betik
Veriyle çalışmak
- Parametre genişletme ve diziler: Parametre genişletmeyle değişkenleri biçimlendirmeyi, varsayılan değer vermeyi ve dizilerle birden çok değeri tek yerde tutmayı öğrenirsin.
- Çağrışımlı diziler ve dizi karşılaştırma: declare -A ile anahtar-değer tablosu kurup iki listeyi karşılaştırarak ortak ve farklı öğeleri bulabilirsin.
- Toplu dosya işlemleri: döngü, mktemp ve rename: Döngü ve rename ile yüzlerce dosyayı güvenli bir sırayla yeniden adlandırıp geçici dosyaları mktemp ile temiz yönetebilirsin.
- Kısa görev: IP başına istekleri sayan betik
Sağlam betikler
- trap ile sinyal ve temizlik: Betik yarıda kesilse bile geçici dosyaları temizleyen trap ile sinyalleri yakalamayı ve düzenli çıkış yapmayı öğrenirsin.
- Betiklerde günlükleme: Betiğin ne yaptığını zaman damgalı günlüklere yazmayı ve bu kayıtların sonradan sorun ve olay incelemede nasıl işe yaradığını öğrenirsin.
- Bitirme görevi: kullanıcı hesabı açan denetimli betik: Hayali bir şirket için yeni kullanıcı hesabı açan, girdiyi denetleyen ve yaptığı her işi günlüğe yazan küçük bir betik hazırlarsın.
Pratik lablar
- Çalışmayan betiği ayağa kaldır: İzin, shebang ve satır sonu hataları olan betiği düzelt ve beklenen çıktıyı verdiğini doğrula.
- Betiğe seçenekler ekle: Var olan temizlik betiğine getopts ile gün sayısı, kuru çalıştırma ve yardım seçeneklerini ekle.
- Kullanıcı girdisini doğrulayan betik yaz: Kullanıcıdan port numarası ve servis adı isteyen, geçersiz girdide yeniden soran ve sonucu yapılandırma satırı olarak yazan betik yaz.
- Argüman denetimi olan yedek betiği iskeleti yaz: Kaynak ve hedef dizini argüman alan, eksik ya da geçersiz argümanda kullanım mesajı verip çıkan betik yaz.
- Hata kodlarını doğru döndüren betik yaz: Her zaman 0 döndüren denetim betiğini, başarısız adımda anlamlı çıkış koduyla duracak şekilde düzelt.
- Betiğin aynı anda iki kez çalışmasını engelle: Zamanlanmış yedek betiğine kilit dosyası ekle; ikinci kopya anlamlı bir iletiyle ve sıfırdan farklı çıkış koduyla hemen çıksın.
- Servis listesini gezip durum raporla: Dosyadaki servis adlarını döngüyle gez ve her birinin çalışıp çalışmadığını tek satırda raporla.
- case ile küçük bir yönetim menüsü yaz: Başlat, durdur, durum ve günlük seçeneklerini case ile işleyen, bilinmeyen seçimde hata kodu döndüren betik yaz.
- Tekrarlanan kodu fonksiyonlara böl: Aynı bloğu dört kez tekrarlayan betiği yerel değişkenli fonksiyonlarla yeniden yaz, çıktı aynı kalsın.
- IP başına istek sayan betik yaz: Verilen erişim günlüğünde IP başına istek sayısını ilişkisel diziyle sayan ve ilk beşi yazdıran betik yaz.
- Dosya adlarını parametre açılımıyla dönüştür: Yedek dosyalarının uzantısını ve tarih önekini dış komut kullanmadan parametre açılımıyla değiştirerek yeniden adlandır.
- İki sunucunun paket listesini dizilerle karşılaştır: İki paket listesini dizilere oku ve yalnızca birinde bulunan paketleri iki ayrı başlık altında raporla.
- Betiği çalıştırmadan söz dizimi hatasını bul: Silme komutu içeren betiği çalıştırmadan söz dizimi denetiminden geçir, kapanmayan bloğu düzelt ve hatalı satır numarasını gir.
- Sonsuz döngüye giren betiği düzelt: Yeniden deneme döngüsünden hiç çıkamayan betikteki sayaç ve koşul hatasını bash -x ile bul ve düzelt.
- Toplu dönüştürmeyi geçici dosyalarla güvenli yap: Dosyaları yerinde bozan dönüştürme betiğini mktemp kullanarak yarıda kesilse bile özgün dosyaları koruyacak şekilde düzelt.
- Yarıda kesilen betiğin arkasını temizlet: Ctrl-C ile kesildiğinde kilit ve geçici dosya bırakan betiğe trap ile temizlik ekle.
- Betiğe zaman damgalı günlük ekle: Sessiz çalışan bakım betiğine her adımı zaman damgası ve düzeyle dosyaya yazan bir günlük fonksiyonu ekle.
- Denetim kayıtlı hesap açma betiği yaz: CSV'den hesap açan, var olanı atlayan, her işlemi günlüğe yazan ve hatada temizlik yapan betik yaz.
Kurs hakkında
Değişkenler, koşullar, döngüler ve fonksiyonlarla Bash betikleri.
Ne öğreneceksin
- İlk betikler
- Karar ve döngü
- Veriyle çalışmak
- Sağlam betikler
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
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 201 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.