İşletim sistemleri genellikle, yöneticilerin ve uzman kullanıcıların özel araçlar oluşturmak için kullanabilecekleri bir tür betik diliyle birlikte gelir. Unix ve Linux farklı değildir ve birçok farklı seçenekle birlikte gelir. Birçok Linux projesini bir arada tutan yapıştırıcı, Bash betiklerinden yapılmıştır. Oluşturulması basit, ancak son derece güçlü komut dosyaları, tüm dosya sistemlerini uzaktan yedeklemekten bir LED flaşı oluşturmaya kadar her şeyi yapabilir.
Bash betikleri, diğer programlama dillerininki gibi davranır. Kod, sırayla satır satır çalışır. Kodumuzun aldığı yolu değiştirmek için koşullu mantığı (seçim) kullanabiliriz ve kod, bir koşul karşılanana kadar veya süresiz olarak kodun yürütülmesini yineleyebilir ve tekrarlayabilir.
Bash, Bourne Again SHell, Unix ve Linux kullanıcıları için mevcut olan birçok farklı kabuktan biridir (Zsh, Ksh, Tcsh, Fish diğerleridir) ve yaygın olarak birçok ana dağıtımla birlikte kurulur. Bu öğreticiyi yazarken Kubuntu 21.10’u çalıştırdık, ancak aynı kod bir Raspberry Pi (Raspberry Pi OS ile) veya hemen hemen tüm diğer Linux dağıtımlarında da çalışacak.
Bu nasıl yapılır bölümünde, üç örnek proje ile Bash betikleri oluşturmaya ilk adımlarımızı atacağız. Birincisi, saygıdeğer “Merhaba Dünya”dır, daha sonra bir sitenin / sunucunun durumunu kontrol etmek için gerçek bir komut dosyası oluşturmadan önce etkileşimli komut dosyalarının nasıl oluşturulacağını öğreniriz. Daha sonra ekstra yol kat edip komut dosyalarımızı sistem genelinde nasıl çalıştırılabilir ve kullanılabilir hale getireceğimizi öğreniyoruz.
“Merhaba Dünya” Bash Komut Dosyası Nasıl Yazılır
“Merhaba Dünya” ile basit bir şekilde başlayacağız. Bu önemsiz görünebilir, ancak bir merhaba dünya testi, bir Bash betiği oluşturma iş akışını anlamak ve temel işlevleri test etmek için yararlıdır. Nano metin düzenleyiciyi kullanacağız, ancak komut dosyalarınızı başka bir terminal veya GUI tabanlı metin düzenleyicide de yazabilirsiniz.
1. Yeni bir dosya oluşturun, merhaba.sh ve nano ile açın.
nano hello.sh
2. İlk satırda kodda kullanılacak yorumlayıcıyı belirtin. Bu durumda Bash’dir.Satırın ilk bölümü olan #!, “shebang” olarak adlandırılır ve bir komut dosyasının başlangıcını belirtir.
#!/bin/bash
3. Yeni bir satırda kullanmak Eko bir dize yazdırmak için ekrana metin.
echo “Hello World”
4. Kodu kaydet CTRL + X tuşlarına, ardından Y ve Enter tuşlarına basarak.
5. Kodu terminalden çalıştırın.
bash hello.sh
Komutun çıktısı, tek bir “Merhaba Dünya” satırıdır. Bu, senaryomuzun çalıştığını ve biraz daha ilginç bir şeye geçebileceğimizi kanıtlıyor.
Bash Komut Dosyalarında Kullanıcı Girdisini Yakalama
Bash tamamen biçimlendirilmiş bir dildir ve onunla etkileşimli araçlar ve uygulamalar oluşturabiliriz. Bu örnekte, kullanıcı adını yakalayacak ve ardından bir dizi selamlama arasından rastgele bir selamlama seçecek bir selamlama oluşturucu oluşturacağız.
1. Yeni bir dosya oluşturun, random-greetings.sh kullanarak nano.
nano random-greetings.sh
2. İlk satırda kodda kullanılacak yorumlayıcıyı belirtin. Bu durumda Bash’dir.
#!/bin/bash
3. Kullanıcıya bir mesaj yazdırmak için bir yankı ekleyin.
echo "Welcome to the Tom's Hardware Greeting Generator"
4. Kullanıcıya soru sormak için bir komut istemi kullanarak kullanıcının klavye girişini okuyun. Kullanıcının girdisi bir değişkene kaydedilir isim.
read -p "What is your name?: " name
5. Bir dizi oluştur selamlama hangi beş selam saklayacak. Dizi, bir dizin numarasıyla depolanan öğelerin listesidir. Dizinin adını ve dizin numarasını kullanarak diziden öğeler (selamlar) çekebiliriz.
greeting[0]="Hola"
greeting[1]="Greetings"
greeting[2]="How do"
greeting[3]="Hey there"
greeting[4]="Howdy"
6. Değişken oluştur boyut dizideki öğelerin sayısını saklayacaktır.
size=$#greeting[@]
7. Değişken oluştur dizin ve sıfırdan dizinin boyutuna kadar rastgele seçilen bir sayıyı, bu durumda beş öğeyi saklayın.
index=$(($RANDOM % $size))
8. Kullanıcının adıyla birlikte rastgele seçilen selamlamayı yazdırmak için yankıyı kullanın.
echo $greeting[$index] $name
9. CTRL + X tuşlarına basarak kodu kaydedin, ardından Y ve Enter tuşlarına basın.
10. Kodu terminalden çalıştırın. Selamlamayı görmek için talimatları izleyin.
bash random-greetings.sh
Bash Komut Dosyaları ile Argümanları Kullanma
Terminalin güzelliği, bir komuta argümanlar, ekstra talimatlar veya parametreler iletebilmemizdir. Bu örnekte, argüman olarak iletilen bir URL’nin durumunu kontrol etmek için bir bash betiği yazacağız.
1. Yeni bir dosya oluştur site-check.sh ve aç nano.
nano site-check.sh
2. İlk satırda kodda kullanılacak yorumlayıcıyı belirtin. Bu durumda Bash’dir.
#!/bin/bash
3. kullanma Eko, kullanıcıya URL için geçerli HTTP yanıt kodu hakkında tavsiyede bulunmak üzere bir mesaj yazın. Değeri $1 argüman olarak belirttiğimiz URL’dir.
echo "The current HTTP response for " $1 " is..."
4. Bir değişken oluşturun, tepki çıktısını saklamak için kıvrılmak emretmek. Kullanmak -yaz argümanı HTTP yanıt kodunu görmek istediğimizi belirtiriz. Başka bir argüman, -sessiz komuttan çıkan tüm çıktıların ekrana dökülmemesini sağlayacaktır. Daha sonra hatalar gibi artık çıktıları şu adrese göndeririz: /dev/null, aslında veri için bir kara delik. Son olarak kullanıyoruz $1 komutu tamamlamak için argümanı (kontrol edilecek URL’miz).
response=$(curl --write-out "%http_coden" --silent --output /dev/null "$1")
5. Kullanmak Eko HTTP yanıt kodunu terminale yazdırmak için.
echo "$response"
6. CTRL + X tuşlarına basarak kodu kaydedin, ardından Y ve Enter tuşlarına basın.
7. Kodu terminalden çalıştırın; kontrol etmek için tam bir alan adı eklemeyi unutmayın.
bash site-check.sh https://tomshardware.com
Sistem genelinde yürütülebilir bir Bash Komut Dosyası oluşturma
Şu anda komut dosyalarımız iyi çalışıyor, ancak sistem genelinde yürütülebilir bir dosya olarak mevcut değiller. Bunu değiştirelim. Bu son kısım için site-check.sh betiğini sürücüdeki herhangi bir yerden kullanabileceğimiz bir uygulamaya dönüştüreceğiz.
İlk önce dosyayı çalıştırılabilir hale getirmemiz gerekiyor, ardından dosyayı kopyalayabiliriz. /usr/bin her yerde kullanılabilen bir yürütülebilir dosya oluşturmak için.
1. Bir terminal penceresi açın ve site-check.sh’ye gidin.
2. Kullanmak chmod dosyayı yürütülebilir olarak ayarlamak için. +x bağımsız değişkeni, dosyanın yürütülebilir olması gerektiğini belirtir.
chmod +x site-check.sh
3. Komut dosyasını çalıştırın. ./ kullanarak, terminale geçerli dizinde yürütülebilir bir dosya çalıştırmasını söyleriz.
./site-check.sh https://bigl.es
4. site-cehck.sh dosyasını şuraya kopyalayın: /usr/bin/ dizini seçin ve .sh uzantısını kaldırmak için hedef dosya adını değiştirin. olarak sudo kullanmamız gerekeceğini unutmayın. /usr/bin dizin kullanıcımıza ait değildir. bizimkilere bir göz atın daha fazla bilgi için kullanıcı, dosya ve klasör izinleri hakkında öğretici.
sudo cp site-check.sh /usr/bin/site-check
5. Koşmak site kontrolü komutun beklendiği gibi çalışıp çalışmadığını test etmek için. Kontrol etmek için bir URL eklemeyi unutmayın.