Kabuk programlama - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Özellikler
    • 1.1 Yorum Satırları
    • 1.2 Betik Dili Seçilebilirliği
    • 1.3 Kısayollar
    • 1.4 Toplu İşler
    • 1.5 Genelleştirme
    • 1.6 Programlama
  • 2 Tipik POSIX betik dilleri
  • 3 Diğer betik dilleri
  • 4 Yaşam döngüsü
  • 5 Avantajlar ve dezavantajlar
  • 6 Betik dilleri arası birlikte çalışabilirlik
  • 7 Diğer işletim sistemlerinde kabuk betikleri
  • 8 En çok bilinen kabuklar
  • 9 Kaynakça

Kabuk programlama

  • العربية
  • বাংলা
  • Català
  • Čeština
  • Deutsch
  • English
  • Español
  • فارسی
  • Suomi
  • Français
  • Galego
  • Íslenska
  • 日本語
  • 한국어
  • Nederlands
  • Norsk bokmål
  • Português
  • Русский
  • Tiếng Việt
  • 中文
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
(Kabuk betiği sayfasından yönlendirildi)
Kabuk programlama (shell)
Bir FreeBSD betik dosyasının ipfirewall yapılandırması için düzenlenmesi

Kabuk betiği (İngilizcesi: shell script), bir Unix kabuğu (bir komut satırı yorumlayıcısı) tarafından çalıştırılmak üzere yazılmış bir bilgisayar programıdır.[1] Kabuk betiklerinin çeşitli lehçeleri komut dili olarak kabul edilir. Kabuk betikleri tarafından gerçekleştirilen tipik işlemler arasında dosya işleme, program çalıştırma ve metin yazdırma yer alır. Ortamı ayarlayan, bir programı çalıştıran ve gerekirse günlükleme veya temizleme işlemleri yapan bir betik, sargı (wrapper) olarak adlandırılır.

Bu terim aynı zamanda, bir işletim sistemi kabuğunun otomatik modda çalıştırılması anlamında daha genel olarak da kullanılmaktadır. Her işletim sistemi bu işlevleri farklı adlarla anmaktadır: toplu işlem dosyaları (MS-DOS-Win95 hattı, OS/2), komut prosedürleri (VMS), kabuk betikleri (Windows NT hattı ve 4NT gibi üçüncü taraf türevleri—makale cmd.exe sayfasında) ve ana bilgisayar işletim sistemleriyle ilişkili çeşitli diğer terimler.

Unix ve Unix benzeri sistemlerde yaygın olarak bulunan kabuklar arasında Korn shell, Bourne shell ve GNU Bash yer alır. Unix tabanlı bir işletim sistemi farklı bir varsayılan kabukla birlikte gelebilir (örneğin macOS'te Zsh), ancak genellikle geriye dönük uyumluluk için bu kabuklar da sistemde bulunur.

Özellikler

[değiştir | kaynağı değiştir]

Yorum Satırları

[değiştir | kaynağı değiştir]

Yorum satırları, kabuk yorumlayıcısı tarafından çalıştırılmaz. Genellikle kare işareti (#) ile başlar ve satır sonuna dek sürer.[2]

Betik Dili Seçilebilirliği

[değiştir | kaynağı değiştir]

Shebang (#!) [en], çalıştırılacak betiğin hangi yorumlayıcı ile yürütüleceğini belirlemek için kullanılan özel bir yorum satırıdır. Betiğin ilk satırında yer almalı ve #! ile başlamalıdır.[2] Unix-benzeri işletim dizgelerinde bu işaretten sonra gelen bölüm, betiği yorumlayacak çalıştırılabilir uygulamanın tam yoludur.[3]

Kısayollar

[değiştir | kaynağı değiştir]

Kabuk betikleri, sistem komutlarını daha elverişli hale getiren kısaltmalar olarak kullanılabilir. Ortam değiştirgeleri, komut seçenekleri ya da ek işlem adımları önceden tanımlanmış olabilir; buna karşın betik, sıradan bir Unix komutu gibi çalışmayı sürdürür.

Örnek olarak, dosyaları listeleyen ls komutunun kısa adlandırılmış bir sürümünü l olarak oluşturmaktır. Bu betik, genellikle kullanıcının bin dizininde /home/kullanıcıadı/bin/l yolunda saklanır ve içerisine bazı öntanımlı komut seçenekleri eklenmiştir.

#!/bin/sh
LC_COLLATE=C ls -FCas "$@"

Burada ilk satır, shebang (#!) kullanılarak, betiği hangi yorumlayıcının çalıştıracağını belirtir. İkinci satır ise ls komutunu; dosya türü simgelerini, sütunlu düzenlemeyi, gizli dosyaları da içerecek şekilde (hiçbirini dışlamadan) ve blok boyutunda dosya boyutlarını gösterecek biçimde çalıştırır.

LC_COLLATE=C ifadesi, harf sıralamasında büyük ve küçük harfleri birleştirmemek ve noktalama işaretlerini yok saymamak için sıralama düzenini C yerelleştirmesine ayarlar. Bu sayede, dotfile [en] ile sıradan dosya adları birbirine karışmaz (noktalı dosyalar genellikle -a gibi seçeneklerle görünür hâle gelir).

"$@" ifadesi, l komutuna verilen tüm girdilerin ls'ye eksiksiz aktarılmasını sağlar; böylece ls'nin tüm alışılmış seçenekleri ve sözdizimi kullanılabilir kalır.

Kullanıcı, sık kullanılan kısa listeleme işlemleri için yalnızca l komutunu çalıştırarak bu betikten yararlanabilir.

Bir başka kısayol örneği, belirli bir dizin içerisindeki tüm dosya ve dizinleri listeleyen basit bir komuttur:

#!/bin/sh

clear
ls -al

Bu durumda betik, olağan başlangıç satırı olan #!/bin/sh ile başlar. Ardından clear komutu çalıştırılarak uçbirim (terminal) temizlenir. Sonraki satırdaki ls -al komutu ise betiğin çalıştırıldığı dizindeki tüm dosya ve dizinleri ayrıntılı olarak listeler.

ls komutuna ait öznitelikler, kullanıcının gereksinimlerine göre değiştirilebilir.

Toplu İşler

[değiştir | kaynağı değiştir]

Kabuk betikleri, bir dizi komutu tek tek elle girilmeksizin ardışık olarak çalıştırabilir. Örneğin, içinde üç C kaynak kodu dosyası bulunan bir dizinde, bu dosyalardan son programı üretmek için gereken dört komutu tek tek çalıştırmak yerine, POSIX uyumlu kabuklar için build adlı bir betik oluşturulabilir. Bu betik, kaynak dosyalarla aynı dizinde saklanır ve derleme işlemini kendiliğinden yapar:

#!/bin/sh
printf 'derleniyor...\n'
cc -c foo.c
cc -c bar.c
cc -c qux.c
cc -o myprog foo.o bar.o qux.o
printf 'tamamlandı.\n'

Bu sayede kullanıcı, düzenleyiciden çıkıp yalnızca ./build komutunu çalıştırarak güncel programı üretme, deneme ve ardından düzenleyiciye dönme olanağı tanır. Ancak 1980'lerden bu yana, bu tür işler için özel araçlar olan make gibi yapılandırma sistemleri kullanılır hale gelmiştir.

Genelleştirme

[değiştir | kaynağı değiştir]

Basit toplu işler izole görevler için olağandışı değildir, ancak kabuk döngüleri, testler ve değişkenler kullanmak, kullanıcılara çok daha fazla esneklik sağlar. Komut satırından—muhtemelen joker karakterler aracılığıyla—verilen görsel adları ile JPEG görsellerini PNG görsellerine dönüştüren bir POSIX sh betiği, her görselin betik içinde tek tek listelenmesi yerine, aşağıdaki gibi bir dosyada oluşturulabilir. Bu betik genellikle /home/kullanıcıadı/bin/jpg2png gibi bir dosyada saklanır:

  
#!/bin/sh  
for jpg; do                                  # verilen her dosya adı için $jpg yerine geçer  
    png=${jpg%.jpg}.png                      # dosya adındaki .jpg uzantısını .png ile değiştirerek PNG adı oluştur  
    printf '"%s" dönüştürülüyor...\n' "$jpg" # betiği çalıştıran kullanıcıya durum bilgisi ver  
    if convert "$jpg" jpg.to.png; then       # ImageMagick tarafından sağlanan convert komutuyla geçici PNG oluştur  
        mv jpg.to.png "$png"                 # başarılıysa geçici PNG dosyasını doğru adla yeniden adlandır  
    else                                     # aksi takdirde hata mesajı ver ve betikten çık  
        printf >&2 'jpg2png: hata: çıktı "jpg.to.png" dosyasına kaydedildi.\n'  
        exit 1  
    fi                                       # "if" test yapısının sonu  
done                                         # "for" döngüsünün sonu  
printf 'tüm dönüştürmeler tamamlandı\n'      # kullanıcıya işlemin başarıyla tamamlandığını bildir

Bu durumda jpg2png betiği, /home/kullanıcıadı/bin/jpg2png *.jpg şeklinde JPEG görsellerle dolu bir dizin üzerinde çalıştırılabilir.

Programlama

[değiştir | kaynağı değiştir]

Günümüzde kabukların birçoğu, yalnızca daha gelişmiş genel amaçlı programlama dillerinde bulunan kontrol akışı yapıları, değişkenler, yorum satırları, diziler, altyordamlar gibi çeşitli özellikleri de sağlar. Bu tür özelliklerin mevcut olması sayesinde, kabuk betikleriyle oldukça gelişmiş uygulamalar yazmak mümkündür.

Ancak, çoğu kabuk dilinin veri türü sistemleri, sınıflar, çok iş parçacığı (threading), karmaşık matematik işlemleri ve diğer yaygın tam teşekküllü dil özellikleri için çok az desteğe sahip olması ya da hiç desteklememesi nedeniyle hâlâ sınırlıdırlar. Ayrıca genellikle derlenmiş kodlara ya da yüksek performans hedefiyle yazılmış yorumlanmış dillere kıyasla çok daha yavaştırlar.

Standart Unix araçları olan sed ve awk, kabuk programlaması için ek yetenekler sağlar; Perl de diğer betik dilleri gibi (örneğin Tcl) kabuk betiklerine gömülebilir. Perl ve Tcl ayrıca grafik araç takımlarıyla birlikte gelir.

Tipik POSIX betik dilleri

[değiştir | kaynağı değiştir]
[icon]
Bu alt başlığın genişletilmesi gerekiyor. Sayfayı düzenleyerek yardımcı olabilirsiniz.

Diğer betik dilleri

[değiştir | kaynağı değiştir]
[icon]
Bu alt başlığın genişletilmesi gerekiyor. Sayfayı düzenleyerek yardımcı olabilirsiniz.

Yaşam döngüsü

[değiştir | kaynağı değiştir]

Kabuk betikleri, yazılım geliştirme sürecinde genellikle ilk aşama olarak kullanılır ve daha sonra sıklıkla farklı bir temel uygulama biçimine dönüştürülür. Bu dönüşüm çoğunlukla Perl, Python veya C gibi dillere yapılır. Yorumlayıcı yönergesi (İngilizcesi: interpreter directive) sayesinde, uygulamanın hangi dilde yazıldığı dosya uzantısıyla belirtilmek zorunda kalmaz; bu bilgi doğrudan betik içinde tanımlanır. Böylece, betiğin farklı bir dilde yeniden uygulanması son kullanıcıyı etkilemeden mümkün olur.

“.sh” dosya uzantısı genellikle bir kabuk betiğini belirtir; ancak çoğu kabuk betiği herhangi bir uzantı taşımaz.[4][5][6][7]

Avantajlar ve dezavantajlar

[değiştir | kaynağı değiştir]
[icon]
Bu alt başlığın genişletilmesi gerekiyor. Sayfayı düzenleyerek yardımcı olabilirsiniz.

Betik dilleri arası birlikte çalışabilirlik

[değiştir | kaynağı değiştir]
[icon]
Bu alt başlığın genişletilmesi gerekiyor. Sayfayı düzenleyerek yardımcı olabilirsiniz.

Diğer işletim sistemlerinde kabuk betikleri

[değiştir | kaynağı değiştir]
[icon]
Bu alt başlığın genişletilmesi gerekiyor. Sayfayı düzenleyerek yardımcı olabilirsiniz.

En çok bilinen kabuklar

[değiştir | kaynağı değiştir]
  1. bash (Bourne Again Shell)
  2. csh (C-Shell)
  3. ksh
  4. sh
  5. tcsh
  6. zsh

Kaynakça

[değiştir | kaynağı değiştir]
  1. ^ Kernighan, Brian W.; Pike, Rob (1984). "3. Using the Shell". The UNIX Programming Environment. Prentice Hall, Inc. s. 94. ISBN 0-13-937699-2. The shell is actually a programming language: it has variables, loops, decision-making, and so on. 
  2. ^ a b Chris Johnson (2009). "Pro Bash Programming: Scripting the Linux Shell". Apress. ISBN 9781430219989. 28 Nisan 2025 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Eylül 2019. 
  3. ^ "exec(3p) – POSIX Programcı Elkitabı". 30 Eylül 2010 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Temmuz 2020. 
  4. ^ Robbins, Arnold; Hannah, Elbert; Lamb, Linda (2008). Learning the vi and Vim Editors. O'Reilly Media, Inc. s. 205. ISBN 9781449313258. 
  5. ^ Easttom, Chuck (2012). Essential Linux Administration: A Comprehensive Guide for Beginners. Course Technology/Cengage Learning. s. 228. ISBN 978-1435459571. 
  6. ^ Kumari, Sinny (23 Kasım 2015). Linux Shell Scripting Essentials. Packt Publishing Ltd. ISBN 9781783552375. Erişim tarihi: 7 Mayıs 2017. Rather than using a file extension for shell scripts, it's preferred to keep a filename without extension and let an interpreter identify the type by looking into shebang(#!). 
  7. ^ Taylor, Dave; Perry, Brandon (16 Aralık 2016). Wicked Cool Shell Scripts, 2nd Edition: 101 Scripts for Linux, OS X and UNIX Systems. No Starch Press. ISBN 9781593276027. Erişim tarihi: 7 Mayıs 2017. Shell scripts don't need a special file extension, so leave the extension blank (or you can add the extension .sh if you prefer, but this isn't required.) 
  • g
  • t
  • d
Programlama dilleri
  • Karşılaştırma
  • Zaman Çizelgesi
  • Tarihçe
  • Ada
  • ALGOL
  • APL
  • Assembly
  • BASIC
  • C
  • C++
  • C#
  • Classic Visual Basic
  • COBOL
  • Erlang
  • Forth
  • Fortran
  • Go
  • Haskell
  • Java
  • JavaScript
  • Kotlin
  • Lisp
  • Lua
  • MATLAB
  • ML
  • Object Pascal
  • Pascal
  • Perl
  • PHP
  • Prolog
  • Python
  • R
  • Ruby
  • Rust
  • SQL
  • Scratch
  • Shell
  • Simula
  • Smalltalk
  • Swift
  • Visual Basic
  • dahası...
  • Liste Listeler: Alfabetik
  • Kategoriik
  • Nesilsel
  • İngilizce temelli olmayan
  • Kategori Kategori
Taslak simgesiYazılım ile ilgili bu madde taslak seviyesindedir. Madde içeriğini genişleterek Vikipedi'ye katkı sağlayabilirsiniz.
"https://tr.wikipedia.org/w/index.php?title=Kabuk_programlama&oldid=35861117" sayfasından alınmıştır
Kategoriler:
  • Yazılım taslakları
  • Kabuk programlama
Gizli kategoriler:
  • Bilgi eksiği olan maddeler
  • Bazı başlıkları geliştirilmeye ihtiyaç duyulan maddeler
  • Tüm taslak maddeler
  • Sayfa en son 15.22, 18 Ağustos 2025 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Kabuk programlama
Konu ekle