Merhaba arkadaşlar Bash programlamanın ikinci bölümü ile karşınızdayım. Bölüme geçen bölümdeki iflerin eksik kalan kısmıyla devam etmek istiyorum.
İfin birinci kullanımını göstermiştik. İkinci bir kullanımı daha mevcut.
Kod:
#!/bin/bash
echo -n "Bir sayı girin:"
read a
if $a -gt 9 ;then
echo "Girdiğiniz sayı iki basamaklı"
else
echo "Girdiğiniz sayı tek basamaklı"
fi
Ne yaptık burada ondan bahsedelim. Parantez yerine ; kullandık. = kullanmadık bunn sebebine gelelim. = dışında çeşitli parametreler ile anlatmak istediğimizi koda getirebiliriz
Bu parametrelere örnek verelim ;
-gt Büyüktür
-lt Küçüktür
-eq Eşittir
-ge Büyük eşittir
-lt Küçük eşittir
İlk derse gördüğümüz karşılaştırma operatörleri yerine bu parametreleri kullanabiliriz.
Pipe İşareti
Şimdi gelelim Linuxun olmazsa olmazı pipe işaretine Türkçesi boru demektir. Aslında boru işlevi görür. Bir komutu başka komuta taşır. Basit bir mantıkla anlatayim.
Konsola dedikki bana dizindeki dosyaları sırala. Bu şekikde yazarsak sıralayıp konsola yazdırıcaktır. Biz konsola yazmasın istiyoruz.
Kod:
ls -l | cyberx.txt
Bu şekilde dizindeki dosyaların listesini cyberx.txt dosyasına yazdık.
Biraz daha teknik anlatıcak olursak sol taraftan gelen outputu(çıktı) sağ tarafa input(girdi) olarak yazdı.
Wc Komutu
Wc komutu bildiğimiz sayaçtır arkadaşlar kelimeleri , satırları vb. sayar.
Parametrelerini görelim;
-w Kelimeleri sayar
-l Satırları sayar
-L En uzun satırı çıktı olarak verir
Az önce öğrendiğimiz pipe ile birleştirelim bu komutu ;
Kod:
ls -l | wc -l
Dediğimiz zaman ls -l bulunduğumuz dizindeki dosyaları listeledi. Bunun çıktısını output olarak elinde tuttu. Wc -l komutuna input olarak girdi ve sonuçta dizinimizde kaç dosya olduğunu öğrenmiş olduk.
İşlem Yapma
İşlem yapmak da çok basittir. Değişken tanımlayıp $(( )) şeklinde de yapabiliyoruz işlemlerimizi. Ama ben basit olanını göstericem.
Kod:
#!/bin/bash
a=5 b=3
echo expr $a + $b
echo expr $a - $b
echo expr $a \* $b
echo expr $a / $b
echo expr $a % $b
Expr komutunu yazmazsak kabuk bunun matematiksel bir işlem olduğunu anlamayacaktır. * Özel bir karakter olduğundan dolayı önüne \ koyarak belirtmemiz gerekiyor.
Burada fazla uzyn tutmayacağım. 3. Ders matematik işlemleri üzerine olacak büyük ihtimalle
Çevresel Değişkenler ve Süslü Parantez
Burada çok işlevsel şeyler yapabiliriz. Öncelikle süslü parantez kullanımını görelim.
Kod:
echo cyberx{1,2,3}
Şeklinde yazarsam ekrana ;
cyberx1 cyberx2 cyberx3
Şeklinde yazdırıcak. Yani kelime türetmede kullanabiliriz.
$ değişkenleri ;
$* --> yazdığımız taktirde dosyadaki bütün verileri gösterecektir.
$# --> bu değişken ise verilerdeki harfleri saymaya yarayacaktır.
$? --> shellde yazılan son komutun çıktısını öğrenmek için kullanılır.
$$ --> shell ID sini gösterir
$0 --> shell adını gösterir
Case Komutu
Casenin mantığı if gibidir. Kali Linux bir çok toolun scriptinde rol oynar aslında. Çok kullanışlı bir komuttur. Gelelim nasıl kullanıldığına ;
Kod:
#!/bin/bash
echo -n "Sayı girin:"
read a
case $a in
1)echo "Bir girdiniz";;
2)echo "İki girdiniz";;
3)echo "Üç girdiniz";;
esac
Şimdi neler yaptığımızdan bahsedelim. Echo -n le sayı girin diye bir yazı yazdırdık. Read komutu ile kullanıcıdan input aldık. Bu a değeri aynı zamanda bizim değişkenimizdi. Bu değişkeni case komutuna atadık. Case komutunda da 1,2,3 girildiğinde ne olsun şeklinde satırlar oluşturduk. Her satırın sonuna ;; ekledik satırın bittiğini belirtmek amacıyla. Programın sonuna da casenin tersi olan esacı yazdık.
Şimdi gelin case ile bir giriş panel scripti yazalım ;
Kod:
#!/bin/bash
echo -n "Lütfen Şifrenizi Giriniz:"
read -s a
case $a in
cyber)echo "Başarıyla giriş yapıldı";;
*)echo "Yanlış şifre girdiniz";;
esac
Şimdi burada ne yaptık. Kullanıcıdan input aldık. Bu input çıktısı konsolda gözükmedi çünkü -s parametresini kullandık. Case komutuyla eğer cyber girdiysem bana o satırdaki echo çıktısını ver dedik. Eğer herhangi birşey girdiysem ( *) diğerleri anlamında yani else) o satırdaki çıktıyı vermesini istedim.
Kali Linuxtaki setoolkiti incelersek ;
Karlımıza 8 seçenek sunuyır araç Bir değişken tanımlıyor. Case kullanarak 1) de şu olsun 2) de şu olsun gibisinden kod satırları yazarak script oluşuyor.
Temel Linux Komutlarını Scriptte Çalıştırma
Burada ise temel hemen hemen hepimizin bildiği temel linux komutlarını Scriptimizde nasıl çalıştırırız onu görelim.
Mesela dostamızı Home dizinine kaydedelim. Scriptin içine dizin değiştirme komutunu yazalım.
Kod:
#!/bin/bash
cd /
pwd
ls -la
Ne yaptık şimdi burada. Yazdığımız bash kodlarımızı çekirdeğe iletti. Çekirdek cd / yani root klasörüne gitti. Ondan sonra print working directory ile dizinimizi yazdırdı /root şeklinde. ls -la ile dosyaların tüm özelliklerini sıraladık.
Banner Komutu
Banner komutu şekilli yazı yazmaya yarayan bir komuttur Yazacağımız yazıyı tırnak içinde yazarız. Şimdi bunu scriptimizde gösterelim.
Kod:
#!/bin/bash
echo "Hoşgeldiniz"
banner "Hoşgeldiniz"
Şeklinde yazarsak echo ile normal biçimde banner ile şekil biçimde Hoşgeldiniz yazmış oluruz.
Dosya Adı Değiştirme Scripti
Bi script yazalım. Yazdığımız script dosyamızın adını değiştirmeye yarasın.
Kod:
#!/bin/bash
mv $1 $2
Burada ne yaptık şimdi. Tek satrlık kodla yazdık biraz basit oldu. $1 değişkeni nedir ondan bahsedeyim.
sh cyberx.sh yazdığım zaman direk entera basmadan 1 boşluk bırakıp yazacağım input değeri (read gibi düşünün) $1 değişkenine atanır. Ondan sonra yazacağım değer ise $2 komutuna atanır.
Dizin Silme Scripti
Kod:
#!/bin/bash
rmdir $1 $2 $3
Şimdi ne yaptık. 4 tane dizinim var diyelim. a,b,c,d dizinleri olsun. Programımın adını yazıp boşluk bıraktığımda a b c d yazarsam ilk 3 dizini silecektir. 4.yü silmez. Çünkü $4 diye bir değişken atamadık scriptimizde.
Set Komutu
Set komutu değişken tutmaya yarayan komuttur. Örnek verecek olursak a=5 diye değişken oluşturmak yerine set 5 yaparak bu değişkeni tutabiliriz.
Set komutunun içinde kod yazmak için eğik tırnak işareti kullanılır.
Dosya İsmi Özelleştirme Scripti
Şimdi bu scriptte girdiğimiz dosya adını dosyaadı.kullanıcıadım yapsın ;
Kod:
#!/bin/bash
a=$1
set 'who'
mv $a $a.$1
Set komutu içine who yazarak kullanıcı adımızı öğrendik. Konumsla değişkene a yı atadık. Ve böylece a nın yazına whoda çıkan ismi yazdı.
Deneme dosyasını scriptte çalıştırdığım zaman Deneme.cyberx olucaktır.
# Komutu
Bu komut saymaya yarar arkadaşlar.
Bu komut basittir fazla uzun tutmayacağım. Örneğin bir dizinin dosyalarını saymak için ne yaparız;
Kod:
#!/bin/bash
#Bulunduğumuz dizindekini göstericek
#Mesela üst satıra cd / diyerek root
#dizinindeki dosyaları listeletebiliriz.
echo "Dosya Sayısı=$#"
2. Dersimizde burada son buluyor. 3. Dersi yetiştirebilirsem haftasonuna yazacağım. Genel olarak örnek olucak. Matematiksel işlemlere değinmeye çalışacağım.
İyi forumlar...
Son düzenleme: