Linux Shell Script Nedir?

Ön Gereksinimler

  • Linux Hakkında Temel Bilgi | Linux 101

Kernel ve Shell Nedir?

Bir İşletim Sisteminin temel iki ana bileşeni Kernel (Çekirdek) ve Shell (Kabuk) tan oluşur.

Kernel (Çekirdek); işletim sistemindeki her şeyin üzerinde denetimi olan merkezi bileşenidir. Uygulamalar ve donanım seviyesindeki bilgi işlemleri arasında bir köprü görevi görür. Çekirdeğin görevleri sistemin kaynaklarını yönetmeyi de kapsamaktadır. Shell (kabuk) ise en dıştaki parçadır. Linux işletim sistemindeki shell, sizden komutlar biçiminde girdi alır, işler ve ardından bir çıktı verir. Yani bir kullanıcının programlar, komutlar ve komut dosyaları üzerinde çalıştığı arayüzdür. Bir kabuğa, onu çalıştıran bir terminal tarafından erişilir. Terminal penceresi ise, shell içerir. Shell bilgisayarınızla etkileşim kurmak, verileri almak veya depolamak, bilgileri işlemek ve diğer çeşitli basit ve hatta son derece karmaşık görevleri yapmak için komutları kullanmanızı sağlar.

Shell Script Nedir?

Kabuk betiği, bir komut satırı yorumlayıcısı olan Unix kabuğu tarafından çalıştırılmak üzere tasarlanmış bir bilgisayar programıdır. Kabuk komut dosyalarının çeşitli lehçeleri, komut dosyası dilleri olarak kabul edilir.  Uzun ve tekrar eden komut dizilerini, herhangi bir zamanda kaydedilebilen ve çalıştırılabilen tek ve basit bir komut dosyasında birleştirerek programlama çabalarını azaltır.

Shell Çeşitleri

Kabuklar kullandığınız dağıtıma göre değişkenlik gösterebilir. Sisteminizdeki yüklü olan tüm kabukları görmek için aşağıdaki dosyanın içeriğine bakmanız yeterlidir.

cat /etc/shells

Şuan kullandığınız kabuğu görmek için;

echo $SHELL

En yaygın kullanılan kabuklar;

  • sh | AT&T Bell Laboratuarlarında Steve Bourne tarafından geliştirilen Bourne kabuğu, şimdiye kadarki ilk UNIX kabuğu olarak kabul edilir. Ş olarak gösterilir. Kompakt yapısı ve yüksek çalışma hızları nedeniyle popülerlik kazandı.
  • bash | Daha popüler olarak Bash kabuğu olarak bilinen GNU Bourne-Again kabuğu, Bourne kabuğuyla uyumlu olacak şekilde tasarlanmıştır. Korn kabuğu ve C kabuğu gibi Linux'taki farklı kabuk türlerinden yararlı özellikler içerir.
  • csh | C kabuğu, California Üniversitesi'nde Bill Joy tarafından oluşturuldu. csh olarak gösterilir. Aritmetik işlemler için yerleşik destek ve C programlama diline benzer bir sözdizimi gibi faydalı programlama özelliklerini içerecek şekilde geliştirilmiştir.
  • ksh | Korn kabuğu, Bourne kabuğunu geliştirmek için David Korn tarafından AT&T Bell Laboratuarlarında geliştirildi. ksh olarak gösterilir. Korn kabuğu, esasen Bourne kabuğunun bir üst kümesidir.
  • zsh | Z Kabuğu veya zsh, özelleştirme için tonlarca iyileştirme içeren bir sh kabuğu uzantısıdır. Tüm özelliklere çok daha fazla sahip modern bir kabuk istiyorsanız, aradığınız şey zsh kabuğudur.

Sisteminizdeki yüklü olan bir kabuğa geçmek için, komut satırına kabuğun adını yazmanız yeterlidir.

bash

Kılavuz boyunca bash kabuğu kullanılacaktır.

she-bang

Script dosyalarını daha önce gördüyseniz ilk satırda hep kabuğun tam yolu gözükür. Buna shebang denilir ve dosyanın en üstüne yazılır. Kısaca yazmış olduğunuz komutların hangi kabuğa gönderileceğini belirler. Shebang içeren bir metin dosyası, Unix benzeri bir işletim sisteminde yürütülebilir bir dosyaymış gibi kullanıldığında, program yükleyici mekanizması dosyanın geri kalan ilk satırını bir yorumlayıcı yönergesi olarak ayrıştırır . Yükleyici, belirtilen yorumlayıcı programını yürütür ve programın dosyayı girdi verisi olarak kullanabilmesi için, betiği çalıştırmaya çalışırken başlangıçta kullanılan yolu kullanarak ona bir argüman olarak iletir. 

Yorum Satırı

Yorum satırı, program ve web site projelerinde proje yapımcısının projenin kaynak kodlarına bakan herhangi bir kişiye mesaj vermesi amacıyla kullanılır. Dosya içerisinde she-bang tanımlaması yaptıktan sonra, tek yapmamız gereken diyez # işareti koymaktır. Artık istediğiniz açıklayıcı cümleleri yazabilirsiniz.

shebang tanımlamasının yanına boşluk veya yorum satırı bırakmayın.

#!/bin/bash

# Bugün shell-script örnekleri yapacağım.
# Projem için bir dosya oluşturdum.
touch Deneme.txt
# Dosyanın içine merhaba yazdırdım.
echo merhaba > Deneme.txt
rm Deneme.txt # Dosyayı sildim.

Script Yazma

Bu genel bilgilerden sonra artık merhaba dünya diyerek ilk scriptimizi yazmaya başlayabiliriz. Script yazarken istediğiniz editörü kullanabilirsiniz. Genelde vim yerine nano tercih ediliyor. Normalde vim editörünü kullansam bile, daha net görmeniz için nano editörü  ile devam edeceğim. Script dosyaları oluştururken, çalışmasını engellemese bile bulunabilmesi kolay, okunaklı ve diğer insanlarında anlayabilmesi için .sh gibi bir uzantı eklememiz daha doğru olacaktır.

Editör ile istediğimiz isimde bir dosya oluşturup, açalım.

nano merhaba.sh

Dosya açıldıktan sonra ilk olarak shebang tanımlamamızı yapalım. Akabinde yorum satırı ekliyorum ve echo komutu ile ekrana Merhaba Dünya çıktısı ekliyorum. Bu basit işlemlerden sonra dosyayı kayıt edip çıkınız.

Yazacağımız kelimeler boşluk içeriyor ise herhangi bir hata almamak için tırnak işareti kullanarak kelimeyi içeri alıyoruz.

Artık dosyamızı çalıştırabiliriz. Bunu yapmanın bir kaç yolu var. İlki  geçerli kabuk üzerinde ./merhaba.sh çalıştırmak. ikincisi ise farklı bir kabuk yani sh merhaba.sh ile çalıştırmak. 

sh merhaba.sh yeni bir kabuk işleminde bir kabuk komut dosyası yürütür.

. merhaba.sh geçerli kabuk işleminde bir kabuk komut dosyası yürütür. (./merhaba.sh geçerli dizinde yürütür.)

İki yöntem ile de scripti çalıştıralım.

./merhaba.sh
bash merhaba.sh

Yukarıdaki görselde görüldüğü üzere ilk olarak geçerli dizinde çalıştırdık. Basit bir deyişle,

./merhaba.sh yürütülebilir bir dosyasını çalıştırmaktan başka bir şey değildir. Bu nedenle yürütülebilir ayrıcalıklar gerektirir. Bu durumda, dosya içinde shebang'da belirtilen Shell, örnek #!/bin/bash belirtilmemişse, mevcut Shell'de yürütülür.

Basit bir deyişle, bash merhaba.sh parametre olarak merhaba.sh ile bash komutunun, yürütülebilir dosyasını yürütür. Bu durumda, merhaba.sh yürütülebilir dosyadaki komutları okuyup engellediği için yürütme ayrıcalığı gerektirmez. Yani kabuklar (sh, bash) ile, üzerinde yürütme izni olmayan bir betiği çalıştırabiliriz.

Şimdi merhaba.sh dosyamıza çalıştırma izni vererek kafamızı çok karıştırmayalım. Chmod komutu ile dosya/dizin izinleri gerçekleştirebiliyoruz. Bu izinleri sayılar ve harfler ile gerçekleştirebilirsiniz. Sadece kullanıcıya çalıştırma izni verelim.

chmod u+x merhaba.sh

Tekrar çalıştırdığım zaman, başarılı bir şekilde işlemin gerçekleştiğini görebiliyorum.

Değişkenler

Birçok programlama dilinin olmazsa olmazı değişkenlerdir. Shell Script geliştirirken de yine olmazlardan diyebiliriz. Değişken tanımlamak için yapacağımız şey oldukça basit. Önce belirlediğimiz bir değişken ismi (LINUX) sonrasında ise değişken tanımlayıp ona değerini veriyoruz. (LINUX Nedir?) Değişkeni tanımladıktan sonra, değişkeni vereceğimiz zaman,  $(değişken) şeklinde yazıyoruz. Son olarak echo komutu ile değişkeni ekrana yazdırıyoruz.

Değişken_adi=Değişken değeri (Eşittir kullanıyoruz.)

$Değişken_adi  Değişkenleri kullanırken, başlarına dolar işareti koymamız gerekiyor. Değişkenleri oluştururken dolar işareti koymuyoruz.

Türkçe karakterler kullanmıyoruz ve sadece  _ (alt tire) işareti kullanıyoruz.

#/bin/bash
LINUX="Linux; bilgisayar işletim sistemlerinin en temel parçası olan çekirdek yazılımlarından bir tanesidir."
echo $LINUX

Dosyayı kayıt edip çalıştırdığımız zaman ilk değişkenimizi uygulamış oluyoruz.

Şimdi ise read kullanarak, kullanıcıdan veri alarak bir değişken oluşturalım.

#!/bin/bash
echo "Merhaba isminiz nedir?"
read AD
echo "Merhaba $AD"

Scripti çalıştırdığımız zaman, bize ismimizi soracak ve girdiğimiz isme göre bize merhaba diyecektir.

DÖNGÜLER

Kısacası bir görevi birden fazla yapmamız gerekiyor ise döngüler ile yapabiliriz.

For döngüsü, programlama dillerinde temel olarak bir kod blokunu belirli bir sayıda ve üst üste çalıştırmak için kullanılan bir döngüdür. Döngü başlangıcında kullanılan değişkene döngü içinde müdahale edilerek tekrar sayısı değiştirilebilir. While döngüsüyle birlikte en çok kullanılan döngüdür.

Basit bir kaç örnek yapalım.

for ile bir değişken (i) belirliyorum. Döngü 10 kere dönecektir. (Ayrıca döngü içinde değişkeni de kullanabilirsiniz.) do ile yaptırıp, echo ile ekrana yazdıralım. Son olarak done ile tamamlıyorum.

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
echo "$i inci defa kontrol ediyorum."
done

Ayrıca aşağıdaki şekilde döngüdeki değişkeni örneğin 4er 4er veya farklı rakamlarda artmasını sağlayabilirsiniz.

#!/bin/bash

for i in {0..10..2}
do
echo "$i inci defa calisiyor"
done

While döngüsü, programlama dillerinin neredeyse tamamında var olan, yaygın kullanılan bir döngüdür. Önceden belirlenmiş bir koşul bozulana kadar devam eder. Koşulun her kontrolünden sonra döngü içerisindeki işlemler bir kez yapılır. Koşul bozulduktan sonraki ilk kontrolde döngü terk edilir.

Basit bir kaç örnek yapalım.

#!/bin/bash
while [ STOP ]; do
echo " Durdurmak İçin ^C tuşlarına basın"
done

Koşulu yazdıktan sonra koyduğumuz noktalı virgül, do anahtar kelimesi ile koşulu aynı satıra yazabilmemizi sağlar.

 

 

 

 

 

Blog'a Dön