Movatterモバイル変換


[0]ホーム

URL:


İçeriğe atla
VikipediÖzgür Ansiklopedi
Ara

Kabuk programlama

Vikipedi, özgür ansiklopedi
Kabuk programlama (shell)
BirFreeBSD betik dosyasınınipfirewall yapılandırması için düzenlenmesi

Kabuk betiği (İngilizcesi:shell script), birUnix kabuğu (birkomut satırı yorumlayıcısı) tarafından çalıştırılmak üzere yazılmış birbilgisayar programıdır.[1] Kabuk betiklerinin çeşitli lehçelerikomut 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 gerekirsegü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ı ve4NT gibi üçüncü taraf türevleri—makalecmd.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ındaKorn shell,Bourne shell veGNU Bash yer alır. Unix tabanlı bir işletim sistemi farklı bir varsayılan kabukla birlikte gelebilir (örneğinmacOS'teZsh), 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. Genelliklekare 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 birUnix komutu gibi çalışmayı sürdürür.

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

#!/bin/shLC_COLLATE=Cls-FCas"$@"

Burada ilk satır, shebang (#!) kullanılarak, betiği hangi yorumlayıcının çalıştıracağını belirtir. İkinci satır isels 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 girdilerinls'ye eksiksiz aktarılmasını sağlar; böylecels'nin tüm alışılmış seçenekleri vesözdizimi kullanılabilir kalır.

Kullanıcı, sık kullanılan kısa listeleme işlemleri için yalnızcal 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/shclearls-al

Bu durumda betik, olağan başlangıç satırı olan#!/bin/sh ile başlar. Ardındanclear komutu çalıştırılarak uçbirim (terminal) temizlenir. Sonraki satırdakils -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 üç Ckaynak 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çinbuild adlı bir betik oluşturulabilir. Bu betik, kaynak dosyalarla aynı dizinde saklanır ve derleme işlemini kendiliğinden yapar:

#!/bin/shprintf'derleniyor...\n'cc-cfoo.ccc-cbar.ccc-cqux.ccc-omyprogfoo.obar.oqux.oprintf'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 olanmake 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/shforjpg;do# verilen her dosya adı için $jpg yerine geçerpng=${jpg%.jpg}.png# dosya adındaki .jpg uzantısını .png ile değiştirerek PNG adı oluşturprintf'"%s" dönüştürülüyor...\n'"$jpg"# betiği çalıştıran kullanıcıya durum bilgisi verifconvert"$jpg"jpg.to.png;then# ImageMagick tarafından sağlanan convert komutuyla geçici PNG oluşturmvjpg.to.png"$png"# başarılıysa geçici PNG dosyasını doğru adla yeniden adlandırelse# aksi takdirde hata mesajı ver ve betikten çıkprintf>&2'jpg2png: hata: çıktı "jpg.to.png" dosyasına kaydedildi.\n'exit1fi# "if" test yapısının sonudone# "for" döngüsünün sonuprintf'tüm dönüştürmeler tamamlandı\n'# kullanıcıya işlemin başarıyla tamamlandığını bildir

Bu durumdajpg2png 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ı olansed veawk, kabuk programlaması için ek yetenekler sağlar;Perl de diğer betik dilleri gibi (örneğinTcl) 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ığıngenişletilmesi gerekiyor.Sayfayı düzenleyerek yardımcı olabilirsiniz.

Diğer betik dilleri

[değiştir |kaynağı değiştir]
[icon]
Bu alt başlığıngeniş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ğunluklaPerl,Python veyaC 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ığıngeniş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ığıngeniş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ığıngeniş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. ^abChris Johnson (2009)."Pro Bash Programming: Scripting the Linux Shell". Apress.ISBN 9781430219989. 28 Nisan 2025 tarihindekaynağından arşivlendi. Erişim tarihi: 27 Eylül 2019. 
  3. ^"exec(3p) – POSIX Programcı Elkitabı". 30 Eylül 2010 tarihindekaynağı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.) 
Taslak simgesiYazılım ile ilgili bu maddetaslak seviyesindedir. Madde içeriğinigeniş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:
Gizli kategoriler:

[8]ページ先頭

©2009-2026 Movatter.jp