Merhaba arkadaşlar bu konumda sizlere Bash programlamayı anlatıcam.
Öncelikle bash programlama nedir ondan bahsedelim. Bash bir kabuk programlamadır işletim sistemiyle kullanıcı arasına bir köprü oluşturur. Aslında linux çekirdekli sistemlerde konsola yazdığımız her komut bir Bash komutudur.
Bash komutlarını konsol üzerinden veya Nano editörütünü açarak yazabiliriz.
Örnek verecek olursak konsola
Kod:
echo "TurkHackTeam"
Nano Editöründe Bash Programlamaya Giriş
Kod:
nano ilkprogram.sh
Yazarak Bash diline uygun bir program açabiliriz. Başına nano komutunu ekleyerek direk nano editörü üzerinde açarız.
Kodların en başına #!/bin/bash yazmaz isek program çalışmaz. Html dilindeki <html> yazısı olarak veya C# dilindeki kütüphane ekleme olarak düşünebiliriz.
Echo Komutu
Bu komutu hepimiz biliyoruzdur sanırım. Echo komutu yazdırmaya yarar. Bu komut üzerinde fazla durmaya gerek yok.
Kod:
echo "Merhaba Dünya"
Şeklinde yazdırabiliriz. Burada önemli bir nokta mesela ekrana $CyberX yazdırmak istiyoruz. Bunu
Kod:
echo "$CyberX"
Kod:
echo '$CyberX'
echo "\$CyberX"
Cat Komutu
Cat komutu ise okumaya yarar. Örneğin bulunduğumuz dizin içinde bir txt dosyası mevcut biz o dosyanın başına cat yazarak pratik bir şekilde içeriğini okuruz. Hemen basit bir program yazalım.
Kod:
#!/bin/bash
echo "CyberXhackk"
Programın adı turkhackteam.sh olsun.
Kod:
cat türkhackteam.sh
Dersek bu komut bize dosyayı çalıştırmaz. Dosyanın içeriğini okur. Yani karşımıza bu çıktıyı verir.
Kod:
#!/bin/bash
echo "CyberXhackk"
Bizim bu dosyayı açmamız için öncelikle açma iznini vermemiz gerekiyor. İzin demişken başka bir komuta geçiyoruz
Chmod Komutu
chmod komutu izin vermek için kullanılan komuttur. 3 çeşit izin vardır.
Yazma(write) , Okuma(read) , Açma(execute)
Yazma iznini vermek için ;
chmod +w dosyaadı
chmod -w dosyaadı
Okuma iznini vermek için ;
chmod +r dosyaadı
chmod -r dosyaadı
Açma iznini vermek için ;
chmod +x dosyaadı
chmod -x dosyaadı
Her iznin bir puanı vardır. Açma >1 Yazma >2 Okuma >4 gibi
Tüm kullanıcılara tüm yetkileri vermek için
Kod:
chmod 777 dosyaadı
Komutunu kullanırız. 7 4+2+1 den gelir.
Bash Programlamada Değişken Tanımlama
Bash programlamada değişken tanımlama Python dili ile benzerlik gösterir. Yani kolaydır.
a=kullanıcıadı
b=şifre
Diyerek değişkenleri tanımlarız örnek olarak ;
Kod:
#!/bin/bash
a=RedHat
b=WhiteHat
echo "Merhaba $a "
echo
echo "Merhaba $b"
Şimdi burada anlatmam gereken iki önemli yer daha var. Echo yazdık ve birşey yazmadık. Bunu boş satır olarak kullanıyoruz. Yani bir satır boş görünsün diye. $ 'ı ise değişkenlerden önce kullanıyoruz. Değişkenlerin önüne dolar işareti koymazsak değişkeni tanımaz.
Yorum Satırları
Her programlama dilinde olduğu gibi Bash dilinde de yorum satırına ihtiyacımız olacaktır.
Kod:
#!/bin/bash
#Bu satır program çalıştığında #görünmeyecektir....
Her satırın başında # işareti olmak zorundadır.
Şu ana kadar ekrana yazdırmayı, değişken tanımlayıp kullanmayı vb. Gördük. Peki ya kullanıcıdan veri almak istersek?
Read Komutu
read komutu kullanıcıdan veri almamızı sağlayan komuttur.
Örnek verecek olursak ;
Kod:
#!/bin/bash
echo "Adınızı Giriniz :"
read isim
echo merhaba $isim
Read komutu ile kullanıcıdan veri almayı sağladık. Aynı zamanda bu komutla bir değişken tanımladık. Echo ile merhaba yazdırdık devamında da $ işareti ile değişkeni koyduk.
Sistemde Bulunan Değişkenler
Değişkenleri kendimiz tanımlıyorduk değil mi. Linux sistemlerde hazır değişkenler bulunmakta Örnek verecek olursak $SHELL değişkeni sistemin kendisinde bulunuyor. Yani ;
Kod:
#!/bin/bash
echo $SHELL
Yazarsak kendimiz değişken tanımlamaya gerek kalmadan direk olarak çıktı alırız. Sistem değişkenleri direk konsola yazılabilir. Bu arada yukarıdaki kodun çıktısı /bin/bash olacaktır.
Karşılaştırma Operatörleri
Ondan önce şundan bahsedeyim arkadaşlar. Linuxta Bash dilinde 0 doğru 1 yanlış demektir. Bir programı çalıştırdıktan sonra echo $? yaptığımızda konsol bize 0 diyorsa program hatasız çalışmış demektir. Mantık hatası yoktur. Eğer bize 1 diyorsa kodlarda veya mantıkta hata vardır.
Mesela yazdığımız programda 15>13 varsa bunun çıktı değeri 0 olarak yani doğru olarak çıkar. Bununla ilgili bir örnek yazalım.
Kod:
#!/bin/bash
ilksayı=10
ikincisayı=20
[[ $ilksayı > $ikincisayı ]]
echo $?
Bu programın çıktısı bize 1 yazacaktır. Çünkü 10>20 dedik. Bu da yanlış bir ifade
Karşılaştırma operatörleri 5 tanedir. Diğer programlama dilleriyle aynıdır bunlar.
> Büyüktür
< Küçüktür
>= Büyüktür veya eşittir
<= Küçüktür veya eşittir
== Eşittir
!= Eşit değildir
İf-Else Komutları
Gelelim her programlama dilinin belkemiği olan if-else komutuna
Bash dilinde de kullanımı diğer programlara benzer aslında.
İf diyoruz yanına da bir komut söylüyoruz. Eğer o komut gerçekleşirse
İf komutunun altında yazdıklarımız gerçekleşiyor. Gerçekleşmezse else komutunun altındakiler gerçekleşiyor.
Örnek olarak bir program yazalım;
Kod:
#!/bin/bash
echo -n "Bir sayı girin :"
read sayı
if [ $sayı = 5 ]
then
echo "Ekrana 5 yazdırdınız"
fi
Mantığını göstermek amaçlı basit bir program yazdık. Şimdi ne yaptığımızı anlatayim. Kullanıcıdan bir sayı girmesi için read komutunu kullandık. Kullanıcı sayı girdi. Eğer sayı 5 ise konsola "Ekrana 5 yazdırdınız" ifadesini gösterdik. Eğer 5 yazmamışsa karşısına bişey çıkmadı. Şimdi bi login giriş scripti oluşturalım;
Kod:
#!/bin/bash
echo "Lütfen Kullanıcı Adı ve Şifre yazın."
echo
echo
echo -n "Kullanıcı Adı:"
read id
echo -n "Şifre:"
read -s pass
if [ $id = cyberx && $pass = turkhackteam ];
then
echo "Sisteme Başarıyla Giriş Yaptınız.."
else
echo "Yanlış şifre girdiniz.."
fi
Şimdi burada naptık. İd ve pass girişi için kullanıcıdan veri aldık. Pass kısmındaki -s parametresi onun gizli olduğunu belirtiyor. Yani konsolda şifremizi yazarken görünmemesini sağlıyor. Neyse konumuza dönelim. Biz burada dedik ki eğer kullanıcın id girişi cyberx ise ve (&&) pass girişi turkhackteam ise Giriş yapıldı yazsın. Eğer bunlardan farklı ise Yanlıi şifre yazsın.
= yerine -eq parametresini de kullanabilirdik.
Fi komutuna gelince ise fi komutu if komutunu bitirmemize yarayan komuttur.
Bu ders burada son buluyor arkadaşlar
Sonraki derste Döngüler İşlem yapma ve Basit bir hesap makinesi yapıcaz..
İyi forumlar...
Son düzenleme: