Önkoşullar
Bu eğitimi takip etmeden önce şunlara sahip olmanızı öneririm:
- Unix tabanlı bir işletim sistemi (Linux veya macOS) ya da Git Bash veya Windows Subsystem for Linux (WSL) yüklü Windows
- Terminalde gezinmeye temel düzeyde aşinalık (terminal açma,
lsile dosyaları listeleme,cdile dizin değiştirme) - Betik içeriği yazmak için nano, vim veya VS Code gibi bir metin düzenleyici
Bir Bash Betiği Nasıl Yazılır
Bash betiklemeye başlamak için basit bir “Hello World” bash betiği örneği oluşturacağız. Bash betiklemeyi daha derinlemesine incelemek isterseniz, Introduction to Bash Scripting kursuna göz atın.
Adım 1: Yeni bir düz metin dosyası oluşturun
İlk adım, .sh uzantılı yeni bir düz metin dosyası oluşturmaktır. Linux veya macOS’ta terminalinizden aşağıdakini çalıştırın:
touch hello_world.shWindows’ta Git Bash veya Windows Subsystem for Linux (WSL) kullanabilirsiniz — her ikisi de aynı touch komutunu destekler. Alternatif olarak, dosyayı herhangi bir metin düzenleyicide (VS Code, Not Defteri, nano) oluşturup .sh uzantısıyla kaydedin.
Adım 2: Yorumlayıcıyı belirtin
Betiklerimizin ilk satırında, betiğimizi ayrıştırmak için hangi yorumlayıcıyı kullanmak istediğimizi belirtmeliyiz. Bu senaryoda Bash’tir. Dolayısıyla, betiğimizin ilk satırına shebang koymalıyız.
#!/bin/bashAdım 3: Komutları yazın
Bash betiğimizin amacı “Hello World!” yazdırmaktır. Bu görevi gerçekleştirmek için yeni bir satıra geçin ve yazdırmak istediğimiz dizgiyi takip eden echo komutunu kullanın.
echo "Hello World!" İşlem tamamlandığında dosyayı kaydedin ve Git Bash’i açın.
Not: Git Bash’i Git downloads sayfasından indirebilirsiniz. Yalnızca işletim sisteminize karşılık gelen Git sürümünü seçin.
Ardından aşağıdaki komutu çalıştırın:
bash hello_world.shBu, Şekil 1’de görüldüğü gibi “Hello World!” çıktısını vermelidir.

Şekil 1: Bash betiğimizin çıktısı
Adım 4: Betiği çalıştırılabilir yapın
Betikleri her zaman bash komutuyla öne getirmek yerine, bir betiği chmod kullanarak doğrudan çalıştırılabilir hale getirebilirsiniz:
chmod +x hello_world.sh
./hello_world.shchmod +x komutu dosyaya çalıştırma izni verir. ./ öneki shell’e betiği geçerli dizinden çalıştırmasını söyler. Bu, üretimde bash betiklerini dağıtmanın ve çalıştırmanın standart yoludur — karşılaşacağınız betiklerin çoğu bu şekilde çalıştırılır.
Bash Betiklerinde Kullanıcı Girdisi Nasıl Alınır
Artık basit bir “Hello World!” betiği yazmayı biliyorsunuz. Şimdi de kullanıcıdan girdi gerektiren betikleri bash ile nasıl yazabileceğimize bakalım. Bu örnekte bir etkinlik oluşturucu yapacağız; kullanıcıdan adını isteyecek ve ardından bir etkinlik dizisinden rastgele bir etkinlik seçip kullanıcıyı katılmaya davet edecek.
Dosyayı oluşturma adımları, Bir Bash Betiği Nasıl Yazılır bölümündekiyle aynıdır — fark, bash betiğimize girdiğimiz komutlardır.
- Terminalden yeni bir düz metin dosyası oluşturun.
touch generate-activity.sh- İlk satıra shebang yazarak bash yorumlayıcısını belirtin.
#!/bin/bash- Betiği çalıştıracak komutları yazın ve dosyayı kaydedin.
Şimdi bash betiğimizi terminalden çağırdığımızda, Şekil 2’dekiyle aynı çıktıyı görmeyi beklemeliyiz.
#!/bin/bash
# Kullanıcıyı selamla ve adını iste
echo "The activity generator"
read -p "What is your name? " name
# Etkinliklerden oluşan bir dizi oluştur
activity[0]="Football"
activity[1]="Table Tennis"
activity[2]="8 Ball Pool"
activity[3]="PS5"
activity[4]="Blackjack"
array_length=${#activity[@]} # Dizinin uzunluğunu sakla
index=$(($RANDOM % $array_length)) # 0 ile array_length arasında rastgele bir indeks seç
# Kullanıcıyı bir etkinliğe katılmaya davet et
echo "Hi" $name, "would you like to play" ${activity[$index]}"?"
read -p "Answer: " answer
Şekil 2: generate-activity.sh betiğinin gösterimi.
Bash Betiklerinde Değişkenlerle Çalışma
Değişkenler, bir betik boyunca başvurulup yeniden kullanılabilen verileri saklar. Bir değişken tanımlamak için, = işaretinin etrafında boşluk bırakmadan bir değer atayın. Değerine, adın önüne $ koyarak erişin:
#!/bin/bash
# Değişkenleri tanımla
greeting="Hello"
user_name="Alice"
current_year=$(date +%Y) # Komut ikamesi
# Değişkenleri kullan
echo "$greeting, $user_name!"
echo "The current year is $current_year."Bash değişkenleri için temel kurallar:
- Değişken adları büyük/küçük harf duyarlıdır:
nameveNAMEfarklı değişkenlerdir - Bir değer atarken
=işaretinin etrafında boşluk olmamalıdır - Bir komutun çıktısını bir değişkende yakalamak için komut ikamesinde
$(command)kullanın - Boşluk içerebilen değerleri güvenle işlemek için değişkenleri çift tırnak içine alın (
"$var")
Bash Betiğinde Fonksiyon Nasıl Oluşturulur
Programlamada fonksiyonlar, tekrarlanan talimatları bir araya getirmek için kullanılır – Python’da Fonksiyonlar hakkında daha fazla bilgi edinin. Fonksiyon yazmanın amacı, aynı kodu sürekli yazmaktan kaçınmak ve kodunuzu daha okunabilir hale getirmektir.
Bir bash fonksiyonu tipik bir fonksiyon olarak düşünülebilir: birden çok kez çağrılabilen komutlar kümesi. Ancak bash fonksiyonları, çoğu programlama diline kıyasla biraz daha sınırlıdır (örneğin, bash fonksiyonları çağrıldıklarında bir değer döndürmenize izin vermez).
Bir fonksiyon kullanan bir bash betiği oluşturmadan önce, bash fonksiyonu bildirimi için sözdizimine bakalım. Bir fonksiyonu, bir fonksiyon adı yazarak, ardından parantez ve fonksiyon gövdesi için süslü parantezler getirerek tanımlayabiliriz – bu, bir bash fonksiyonu yazmanın en yaygın yoludur. Kodda şöyle görünür:
# Bir bash fonksiyonu yazmanın en yaygın yolu.
example_function () {
commands
}Bir bash fonksiyonunu biçimlendirmenin bir diğer yolu, satıra ayrılmış bash anahtar sözcüğü function ile başlamak, ardından fonksiyon adı ve fonksiyon gövdesi için süslü parantezler getirmektir – parantezlere ihtiyaç yoktur.
# Bir bash fonksiyonu yazmanın başka bir yolu.
function example_function {
commands
}Fonksiyonu tanımlamak komutları yürütmez. Bir bash fonksiyonunu çağırmak için, aşağıdaki gibi fonksiyon adını çağırmalısınız:
#!/bin/bash
# Bir hello world bash fonksiyonu
hello_world () {
echo "Hello World!"
}
# hello_world fonksiyonunu çağırma
hello_worldYukarıda, betik çalıştırıldığında “Hello World!” yazdıran bir hello_world fonksiyonu oluşturduk.
Bash fonksiyonlarına argüman aktarma
Argümanlar, belirli bir fonksiyonda kullanılan değişkenlerdir. Bash’te, Python, Julia vb. gibi üst düzey programlama dillerinde olduğu gibi fonksiyonlara argümanları doğrudan geçiremeyiz. Bunun yerine, bash fonksiyonlarının kendi komut satırı argümanları vardır ve bir fonksiyona parametreleri, fonksiyon adını çağırdıktan sonra (birden fazla argüman varsa aralarına boşluk koyarak) geçirebiliriz.
Özünde, fonksiyon argümanları konumsal parametreler olarak değerlendirilir ve fonksiyona geçirilen argümanlara erişmek için kabuk değişkenleri ($1, $2, ..., $n) kullanılır.
#!/bin/bash
greet () {
echo "Hello $1 $2"
}
greet "John" "Doe" Yukarıdaki bash betiğinde greet fonksiyonumuza iki argüman, John ve Doe, geçirdik. Betik şimdi çalıştırıldığında aşağıdaki çıktıyı görmeliyiz:
Hello John DoeBash Betiklerinde Döngülerin Kullanımı
Döngüler, bir komut bloğunu birden çok kez yinelemenizi sağlar. Bash, for döngülerini ve while döngülerini destekler.
For döngüleri
Bir for döngüsü, bir öğe listesi veya sayısal bir aralık üzerinde yineler:
#!/bin/bash
# Bir liste üzerinde döngü
defor fruit in apple banana cherry; do
echo "I like $fruit"
done
# Sayısal bir aralık üzerinde döngü
for number in {1..5}; do
echo "Number: $number"
doneWhile döngüleri
Bir while döngüsü, koşulu doğru değerlendikçe çalışır:
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count + 1))
doneBash’te “If” Deyimleri Yazma
“If” deyimleri, programlama dillerinde kullanılan koşullu deyimlerdir. Bir ifade doğruysa, ilgili koşul çalışır. Bu işlevsellik, belirli bir kod parçasının hangi koşullar altında yürütüleceğini belirlememize olanak tanır.
Bash’te koşullu yapıyı if ile başlatır ve ters yazımı olan fi ile bitiririz. İşte if koşulları içeren örnek bir bash betiği:
#!/bin/bash
read -p "Give me a number: " number
if [ $number -gt 10 ];
then
echo "Your number is greater than 10."
fiYukarıdaki bash betiğinde kullanıcıdan bir sayı vermesi istenir. Kullanıcının verdiği sayı 10’dan büyükse, terminale “Your number is greater than 10.” yazdırılır; değilse program sona erer. Şekil 3, 10’dan büyük bir sayı verdiğimiz bir örnektir.

Şekil 3: Bash betiklerinde “if” deyimlerinin kullanımı
Sonuç
Bash betikleme, görevleri otomatikleştirmek, sistemleri yönetmek ve veri hatları kurmak için güçlü bir beceridir. Bu eğitimde, temel yapı taşlarını ele aldım: shebang satırı, betik oluşturma ve çalıştırma, kullanıcı girdisi alma, değişkenlerle çalışma, döngüler, fonksiyonlar ve koşullar.
Bash betikleme yolculuğunuza devam etmek için şu sonraki adımları keşfedin:
- Uygulamalı alıştırmalarla becerilerinizi derinleştirmek için Introduction to Bash Scripting kursunu alın
- Betikleri
cronkullanarak otomatik çalışacak şekilde zamanlamayı öğrenin - Dizge işleme, dosya G/Ç ve çıkış kodlarıyla hata yönetimini keşfedin
- Gerçek dünya otomasyon betikleriyle pratik yapın: yedeklemeler, günlük döndürme ve sistem sağlık kontrolleri
- Becerilerinizi bir üst seviyeye taşımak için Data Processing in Shell kursumuzu öneririm
Bash Betikleme SSS
Bash betiği nedir?
Bir bash betiği, Bash shell’in yürütmesi için bir dizi komut içeren düz metin bir dosyadır. Gelenek gereği .sh uzantısıyla saklanır; bash betikleri, işletim sistemine hangi yorumlayıcıyı kullanacağını söyleyen bir shebang satırıyla (#!/bin/bash) başlar. Betikler, tekrarlı görevleri otomatikleştirmek, dosyaları yönetmek, programları çalıştırmak ve sistem yönetimi yapmak için kullanılır.
Bir bash betiği nasıl çalıştırılır?
Bir bash betiğini çalıştırmanın iki yolu vardır:
- bash komutunu kullanmak:
bash script.sh— çalıştırma iznine gerek olmadan betiği doğrudan çalıştırır - Çalıştırılabilir yapmak: Bir kez
chmod +x script.shkomutunu çalıştırarak çalıştırma izni verin, ardından./script.shile çalıştırın
İkinci yöntem, üretim ortamlarında betikleri dağıtmanın ve çalıştırmanın standart yaklaşımıdır.
Bash betiğinde shebang satırı nedir?
Shebang (#!/bin/bash), bir bash betiğinin ilk satırıdır. İşletim sistemine dosyayı yürütmek için hangi yorumlayıcıyı kullanacağını söyler. #! karakterlerinin ("hash-bang") ardından Bash yorumlayıcısının mutlak yolu (/bin/bash) gelir. Shebang olmadan, betiğiniz yine çalışabilir ancak o anda etkin olan shell kullanılacağından sistemler arasında tutarsız davranışlara yol açabilir.
Bash ile shell betikleme arasındaki fark nedir?
Shell betikleme, herhangi bir Unix shell’inde (sh, bash, zsh, ksh, vb.) çalışan betikler yazmanın genel adıdır. Bash betikleme, özellikle Bash shell (Bourne Again SHell) için yazılan betikleri ifade eder. Bash, çoğu Linux sisteminde varsayılan shelldir ve diziler, aritmetik genişletme ve gelişmiş dizge işleme gibi özelliklerle POSIX shell standardını genişletir. İnsanlar "shell betikleme" dediğinde genellikle bash betiklemeyi kasteder.
Bir bash betiğinde değişkenleri nasıl bildirir ve kullanırım?
Bir değişkeni, = işaretinin etrafında boşluk olmadan bir değer atayarak bildirir ve adının önüne $ koyarak değerine erişirsiniz:
name="Alice"
echo "Hello, $name!"Temel kurallar: değişken adları büyük/küçük harfe duyarlıdır, = etrafında boşluk olmaz ve değer boşluk içerebileceğinde değişkenleri çift tırnak içine alın ("$var"). Bir komutun çıktısını bir değişkende saklamak için komut ikamesinde $(command) kullanın.

Bir kabuk (shell), işletim sistemine bir arayüz sunan bir tür bilgisayar programıdır. Shell adı, işletim sisteminin en dış katmanı olmasından gelir.
Kullanıcılarla işletim sistemi arasındaki etkileşimi yönetmek için shell girdi ister, bu girdiyi işletim sistemi adına yorumlar ve ardından aldığı çıktıları işler. Bu girdi, yapılan işleme ve bilgisayarın rolüne bağlı olarak bir komut satırı arayüzü (CLI) veya grafiksel kullanıcı arayüzü (GUI) üzerinden sağlanabilir.
Özetle, bir shell kullanıcıların ve diğer programların bir işletim sisteminin bileşenleriyle doğrudan iletişim kurmasını sağlar.
Özet
.shuzantılı düz metin bir dosyadır#!/bin/bashbash script.shile çalıştırın; ya dachmod +x script.shile çalıştırılabilir yapıp./script.sholarak çalıştırınfor/while) ve koşullar (if/else) desteklerKabuk Betiklemeye Giriş
Shell betikleme, bir bilgisayarın işletim sistemiyle iletişim kurmanın önemli bir parçasıdır ve geliştiriciler, sistem yöneticileri ve veri mühendisleri için değerli bir beceridir. Betik derken, yazılıp bir dosyada saklanan bir dizi shell ve işletim sistemi komutunu kastediyoruz: shell betiklerinin gerçekleştirdiği tipik işlemler arasında dosya düzenleme, program yürütme ve metin yazdırma gibi görevler bulunur.
Bu basit yöntemi öğrenmek, belirli komutları tekrar tekrar elle yazma ihtiyacını ortadan kaldırdığı için geliştiricilere önemli ölçüde zaman kazandırabilir – hatta betiklerin otomatik olarak çalışacak şekilde zamanlanması da mümkündür.
Unix ve Linux kullanıcıları için birkaç farklı shell mevcuttur. Bu eğitimin geri kalanında özellikle Bourne Again SHell (bash) üzerinde duracağız; bu shell, Bourne shell’in geliştirilmiş bir sürümüdür ve Unix tabanlı işletim sistemleri (Linux dahil) için en yaygın komut satırı arayüzlerinden biridir.
Komut satırına yeni misiniz? Bash betiklemeye dalmadan önce temelinizi oluşturmak için Introduction to Shell kursumuzla başlayın.
Bash Betiği Nedir?
Bash, bir bilgisayarın işletim sistemiyle etkileşim kurmaktan sorumlu bir Unix komut satırı arayüzüdür. Nasıl ki film senaryoları oyunculara ne yapacaklarını söylüyorsa, bir bash betiği de bash shell’e ne yapması gerektiğini söyler. Dolayısıyla, bash betiği komutları bir araya getirerek bir program oluşturmanın kullanışlı bir yoludur.
Komut satırından doğrudan çalıştırabildiğiniz her komutu bir bash betiğine koyabilirsiniz ve komut satırında olduğu gibi aynı işlemleri yapmasını beklersiniz. Tersine, bash betiğinize yazdığınız herhangi bir komutu komut satırından doğrudan çalıştırabilir ve aynı sonucu elde edersiniz. Başka bir deyişle, bilgisayarınızla komut satırından etkileşim kurmayı biliyorsanız, bash betikleme hakkında zaten hatırı sayılır bilgiye sahipsiniz demektir.
Başlıca farklardan biri, bir bash betiğinin gelenek gereği
.shuzantısıyla kaydedilen düz metin bir dosya olmasıdır (.shuzantısı olmadan da çalışabilirler).Bash betiklerinin bir diğer ayırt edici özelliği, tüm betiklerin ilk satırında bulunan “shebang”dir. Esasen shebang, bash “#” ve ünlem “!” bileşiminin ardından bash shell yolunun geldiği, bash yorumlayıcısına giden mutlak bir yoldur. Linux işletim sistemine dosyayı ayrıştırmak için hangi yorumlayıcıyı kullanması gerektiğini bildirir.