bash

Bash, or the Bourne Again Shell, is a widely used command-line interpreter and scripting language for Unix-like operating systems, providing a powerful interfac...

Bash (Bourne Again SHell), Unix benzeri işletim sistemleri için yaygın olarak kullanılan bir komut satırı yorumlayıcısı ve betik dilidir. Çoğu Linux dağıtımında ve macOS'ta varsayılan kabuk olarak, işletim sistemiyle etkileşim kurmak için güçlü bir arayüz sağlar. Kullanıcılar komutları doğrudan terminalde çalıştırabilir veya karmaşık görevleri otomatikleştirmek için dosyalarda saklanan komut dizileri olan betikler yazabilirler. Bash, komut geçmişi, sekme tamamlama, kabuk değişkenleri, girdi/çıktı yönlendirme (>, <, |), komut ikamesi (` komut veya $(komut)`) ve işlem kontrolü gibi özellikleri destekler. Betik yetenekleri kontrol akışı yapılarını (if-else, for, while döngüleri), fonksiyonları, dizileri ve düzenli ifade eşleştirmeyi içerir. Bash betikleri yorumlanır, yani Bash yorumlayıcısı tarafından satır satır yürütülürler. Bu, onları farklı Unix benzeri sistemlerde oldukça taşınabilir hale getirir ancak bazen derlenmiş dillere kıyasla daha yavaş yürütülmeye yol açabilir. Yaygın kullanım alanları arasında sistem yönetimi, yazılım geliştirme iş akışları (derleme betikleri, dağıtım betikleri), veri işleme ve genel komut satırı görev otomasyonu bulunur. Bash'ı anlamak, Unix tabanlı platformlarda etkili sistem yönetimi ve geliştirme için çok önemlidir. Dezavantajları arasında bazen karmaşık bir sözdizimi, betikler dikkatli yazılmazsa potansiyel güvenlik açıkları (örneğin, komut enjeksiyonu) ve özel programlama dillerine kıyasla çok büyük veri kümelerini veya hesaplama açısından yoğun görevleri işlemede sınırlamalar yer alır.

        graph LR
  Center["bash"]:::main
  Rel_shell_scripting["shell-scripting"]:::related -.-> Center
  click Rel_shell_scripting "/terms/shell-scripting"
  Rel_zsh["zsh"]:::related -.-> Center
  click Rel_zsh "/terms/zsh"
  Rel_apt_get["apt-get"]:::related -.-> Center
  click Rel_apt_get "/terms/apt-get"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5 yaşındaki gibi açıkla

Bash, bilgisayarınızla konuştuğunuz gizli bir dil gibidir. Komutları yazarsınız ve bilgisayar tam olarak söylediğinizi yapar, örneğin 'bu dosyayı aç' veya 'şu klasörü kopyala'. Bilgisayarın birçok şeyi otomatik olarak yapmasını sağlamak için bir komut listesi de yazabilirsiniz!

🤓 Expert Deep Dive

Bash, POSIX uyumlu bir kabuk ortamı uygular ve bunu çok sayıda özellikle genişletir. Ayrıştırma motoru, tokenizasyon, değişken genişletme ( ${var:-default} gibi değiştiricilere sahip parametre genişletme dahil), aritmetik genişletme ($((expression))) ve komut ikamesini işleyerek kabuk dilbilgisini yorumlar. Betik yürütme, işlem çatallanmasını içerir; kabuk, harici komutları çalıştırmak için alt işlemler oluşturur. Yerleşik komutlar, performans avantajları sunarak doğrudan kabuk işlemi içinde yürütülür. case ifadeleri ve select menüleri gibi kontrol akışı yapıları, yapılandırılmış programlama yetenekleri sağlar. Düzenli ifade eşleştirme, desen eşleştirme operatörleri aracılığıyla kolaylaştırılır (örneğin, [ [string =~ regex ]]). Güvenlik hususları önemlidir: komutlarda kullanılan temizlenmemiş kullanıcı girdisi, kabuk enjeksiyonu güvenlik açıklarına yol açabilir. Daha sağlam betikler yazmak için set -e (hatada çıkış), set -u (ayarlanmamış değişkenlerde çıkış) ve set -o pipefail (herhangi bir komut başarısız olursa boru hattını başarısız kıl) kullanımı yaygın uygulamalardır. Performans darboğazları genellikle aşırı harici komut çağrılarından veya verimsiz dize manipülasyonundan kaynaklanır, bu da performans açısından kritik görevler için kabuk yerleşiklerini veya alternatif dilleri kullanmaya yöneltir.

📚 Kaynaklar