Bash, "Bourne Again SHell" ifadesinin kısaltmasıdır ve hem işletim sistemi için bir komut yorumlayıcı hem de kabuk betikleri yazmak için bir programlama dili olarak hizmet eden bir Unix kabuğu ve komut dilidir. Bourne Shell (sh) için bir yedek olarak oluşturulan Bash, Korn Shell (ksh) ve C Shell (csh) gibi diğer kabuklardan özellikler içerir ve bu da onu komut satırı ve betik görevleri için güçlü ve çok yönlü bir araç haline getirir. Bash, çeşitli Linux dağıtımlarında, macOS'ta ve diğer Unix benzeri işletim sistemlerinde yaygın olarak kullanılmakta olup, birçok sistemde varsayılan kabuk olarak görev yapmaktadır.
Bash, 1987 yılında Brian Fox tarafından GNU Projesi için Bourne Shell (sh) için ücretsiz bir yazılım yedeği olarak geliştirilmiştir. Amaç, mevcut sh betikleriyle uyumluluğu korurken kullanıcılara daha zengin özelliklere sahip bir kabuk sunmaktı. Yıllar içinde, Bash birçok geliştiricinin katkılarıyla evrim geçirmiştir ve büyümesi, Linux ve açık kaynak yazılımın artan popülaritesiyle desteklenmiştir.
Bash, ilk yıllarında genişletilebilirliği ve sunduğu zengin özellik seti sayesinde kullanıcılar ve geliştiriciler arasında hızla popülerlik kazandı. Anahtar özellikler arasında komut satırı düzenleme, iş kontrolü ve geliştirilmiş betik yetenekleri bulunmaktadır. Şu anda, Bash aktif olarak bakımda olup, Eylül 2021'de 5.2 sürümü yayımlanmıştır. Sistem yöneticileri, geliştiriciler ve Unix benzeri işletim sistemleriyle çalışan herkes için standart bir araç olmaya devam etmektedir.
Bash, birkaç diğer kabuk ve programlama dilinden ilham almıştır. Korn Shell (ksh) ve C Shell (csh) gibi kabukların sözdizimi ve komut yapıları, tasarımını büyük ölçüde etkilemiştir. Ayrıca, komut dili özellikleri, Python ve Ruby gibi programlama dilleriyle entegrasyonu kolaylaştırmakta, bu diller genellikle işlevselliği artırmak için betiklerde kullanılmaktadır.
Bash, betik yazma ve sistem görevlerini otomatikleştirme, yazılım kurulumlarını yönetme, sistem yönetimi görevlerini yerine getirme ve veri işleme işleri yapma gibi alanlarda yaygın olarak kullanılmaktadır. Birçok yazılım uygulamasının ve CI/CD boru hatlarının geliştirme iş akışlarına entegre edilmiştir ve bulut ortamları ile DevOps uygulamalarında da yer almaktadır.
Bash, önceden bir tür beyanı olmadan değişken atamasını destekler. Örneğin:
name="Dünya"
echo "Merhaba, $name!"
Bash, akış kontrolü için if-else gibi koşullu ifadeler içerir:
if [ "$name" == "Dünya" ]; then
echo "Merhaba, Dünya!"
else
echo "Merhaba, Yabancı!"
fi
Bash, for
, while
ve until
gibi döngülere izin verir. İşte bir for
döngüsü örneği:
for i in {1..5}; do
echo "İterasyon $i"
done
Bash'te fonksiyonlar tanımlayıp çağırabilirsiniz:
greet() {
echo "Merhaba, $1!"
}
greet "Kullanıcı"
Bash, geri tırnaklar veya $(...)
kullanarak komut yerine koymayı destekler:
today=$(date)
echo "Bugün $today"
Bash, bir boyutlu dizileri destekler:
fruits=("elma" "muz" "kiraz")
echo "İlk meyve: ${fruits[0]}"
Bash, alt dize çıkarımı gibi dize manipülasyon özellikleri sunar:
text="Merhaba Dünya"
echo ${text:6:5} # "Dünya" çıktısını verir
Bash, $((...))
kullanarak temel aritmetik işlemlere izin verir:
result=$((5 + 3))
echo "Sonuç $result"
Bash'te girdi ve çıktıyı yönlendirebilirsiniz:
echo "Merhaba" > output.txt
Bash, çok satırlı girdi için here belgelerinin kullanılmasına izin verir, bu da çok satırlı dizeleri komutlara geçirmeyi kolaylaştırır:
cat << EOF
Bu çok satırlı bir dizedir.
EOF
Bash betikleri herhangi bir metin düzenleyicisinde düzenlenebilirken, birkaç entegre geliştirme ortamı (IDE) Bash desteği sunmaktadır. Bunlar arasında Visual Studio Code, Atom, Sublime Text ve eklentilerle Eclipse bulunmaktadır.
Bash betikleri derlenmek yerine yorumlanır ve betikleri çalıştıran Bash yorumlayıcısıdır. Bir betiği çalıştırmak için kullanılan komut:
bash script.sh
Projeleri oluşturmak için genellikle make
kullanarak bir Makefile oluşturmak veya kurulum veya dağıtım gibi görevleri otomatikleştirmek için Bash betikleri kullanmak yaygındır.
Bash, aşağıdaki alanlarda kullanılmaktadır:
Bash, betik yazımı için Python ve Perl gibi dillerle en yakın karşılaştırmalarını bulurken, belirli kullanım durumlarında C veya Java gibi daha genel amaçlı dillerle de karşılaştırılabilir.
Bash, komut satırı etkileşimleri ve sistem görevlerinde mükemmel iken, Python karmaşık programlama görevleri, veri işleme ve uygulama geliştirme için daha çok yönlüdür. Python, daha büyük uygulamalar için uygun hale getiren zengin bir standart kütüphane sunar.
Perl genellikle metin işleme ve sistem yönetimi görevleri için kullanılır; ancak, Bash'a kıyasla daha karmaşık bir sözdizimine sahiptir. Bash, komut yürütmeye odaklanırken, Perl daha programlama merkezlidir.
JavaScript esasen bir istemci tarafı web dilidir, oysa Bash sistem işlemleri için bir komut yorumlayıcı ve betik işleyici olarak hizmet eder. Bash, web geliştirme için uygun değildir, oysa JavaScript bu alanda mükemmel bir performans sergiler.
Bash betiklerini diğer dillere çevirirken, komutların eşdeğerlerini doğrulamak ve sistem düzeyindeki özelliklere olan bağımlılıkları kontrol etmek önemlidir. Shell betiklerini Python'a dönüştürebilen sh2py
gibi araçlar mevcuttur, ancak anlamsal farklılıkların dikkatlice yönetilmesi gerekir.
Kaynak-kaynağa çeviri için mevcut birkaç araç bulunmaktadır: