İPUCU

Linux Linux İle İlgili Bilgi Paylaşım Platformu

Seçenekler

Bash Scripting/Ders1 ~CyberX #StajyerAsistanKulübü#

CyberXhackk - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2016
Nereden:
pardus@root
Mesajlar:
2.992
Konular:
239
Teşekkür (Etti):
772
Teşekkür (Aldı):
702
Ticaret:
(0) %
28-05-2018 23:36
#1
Bash Scripting/Ders1 ~CyberX #StajyerAsistanKulübü#






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"
yazarak komut çıktısı olarak TurkHackTeam yazısını alabiliriz.




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"
Şeklinde kullanamayız. Çünkü dolar işareti tanımladığımız değişkeni kullandırmaya yöneliktir. Özel karakterleri kullanırken '(Tek tırnak) veya özel karakterden önce \ işareti kullanılır.

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...









--------------------- Linux'a Dair Herşey..
Konu CyberXhackk tarafından (28-05-2018 23:38 Saat 23:38 ) değiştirilmiştir.
CH4M3 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2017
Nereden:
php island
Mesajlar:
1.726
Konular:
90
Teşekkür (Etti):
520
Teşekkür (Aldı):
512
Ticaret:
(0) %
28-05-2018 23:37
#2
Ellerine sağlık, ben de bu konuyu bekliyordum
KartalHacked - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2017
Nereden:
T Ü R K
Yaş:
20
Mesajlar:
652
Konular:
52
Teşekkür (Etti):
145
Teşekkür (Aldı):
158
Ticaret:
(0) %
28-05-2018 23:38
#3
Eline sağlık
---------------------
Gâfil ne bilir neş've-i pür-şevk-i vegâyı
Meydân-ı celâdetteki envar-ı sefâyı
Merdân-ı gazâ aşk ile tekbirler alınca
Titretti yine, rû-yı zemin arş-ı semâyı.
Allah yolunda cenk edelim şân alalım şan
Kur'an'da zafer vaadediyor Hazret'i Yezdan.
NighTTeRRorS - ait Kullanıcı Resmi (Avatar)
Grafik Tim Lideri
Üyelik tarihi:
07/2013
Nereden:
Linux@Grafik
Mesajlar:
3.104
Konular:
416
Teşekkür (Etti):
1615
Teşekkür (Aldı):
1236
Ticaret:
(0) %
28-05-2018 23:43
#4
Ellerine emeğine sağlık
---------------------
Halk içinde muteber bir nesne yok devlet gibi,
Olmaya devlet cihanda bir nefes sıhhat gibi
.
Kanuni Sultan Süleyman
Grafik Timi Çalışanı
Eski Dergi Timi Çalışanı

Deviantart Hesabım
'TÜRKÇÜ - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2017
Mesajlar:
2.058
Konular:
277
Teşekkür (Etti):
980
Teşekkür (Aldı):
491
Ticaret:
(0) %
28-05-2018 23:44
#5
Emeginize sağlık çok güzel bir konu olmuş.
---------------------
Kim bu cennet vatanın uğruna olmaz ki fedâ ?
Şühedâ fışkıracak, toprağı sıksan, şühedâ!
Cânı, cânânı, bütün varımı alsın da Huda,
Etmesin tek vatanımdan beni dünyâda cüdâ
firehackturk - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2016
Nereden:
Gence
Yaş:
22
Mesajlar:
9.747
Konular:
1230
Teşekkür (Etti):
5752
Teşekkür (Aldı):
2703
Ticaret:
(0) %
28-05-2018 23:54
#6
Ellerine sağlık kardeşim.
---------------------
Yarın olmasın istedim bazen, hiçbir dileğim olmadı madem...

Eski ANKA moderatörü
M4K4R - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
03/2017
Mesajlar:
4.266
Konular:
241
Teşekkür (Etti):
131
Teşekkür (Aldı):
847
Ticaret:
(0) %
29-05-2018 00:00
#7
Eline sağlık !
v0rxa - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2018
Mesajlar:
960
Konular:
70
Teşekkür (Etti):
2
Teşekkür (Aldı):
155
Ticaret:
(0) %
29-05-2018 00:05
#8
Eline sağlık
THE HACKER 21 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Mesajlar:
2.940
Konular:
86
Teşekkür (Etti):
201
Teşekkür (Aldı):
917
Ticaret:
(0) %
29-05-2018 00:11
#9
Kaliteli Konu. Eline Sağlık
---------------------
Oğlum bence de dünya batsın, artık dönmeyi falan bıraksın
xERBOY - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2017
Nereden:
Moscow
Mesajlar:
986
Konular:
145
Teşekkür (Etti):
644
Teşekkür (Aldı):
337
Ticaret:
(0) %
29-05-2018 00:15
#10
Eline sağlık uğraşılmış..
---------------------
You know who i am

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı