THT DUYURU

chat
ugursuz reklam
takipci
Seçenekler

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

CyberXhackk - ait Kullanıcı Resmi (Avatar)
Hevesli Üye
Üyelik tarihi:
03/2016
Nereden:
C/C++ Dev.
Mesajlar:
3.103
Konular:
246
Teşekkür (Etti):
845
Teşekkür (Aldı):
810
Ticaret:
(0) %
33
6521
28-05-2018 23:36
#1






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









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.884
Konular:
98
Teşekkür (Etti):
542
Teşekkür (Aldı):
596
Ticaret:
(0) %
28-05-2018 23:37
#2
Ellerine sağlık, ben de bu konuyu bekliyordum
KartalHacked - ait Kullanıcı Resmi (Avatar)
Yeni Üye
Üyelik tarihi:
10/2017
Nereden:
T Ü R K
Yaş:
21
Mesajlar:
650
Konular:
52
Teşekkür (Etti):
143
Teşekkür (Aldı):
159
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)
Hevesli Üye
Üyelik tarihi:
07/2013
Nereden:
Linux@Grafik
Mesajlar:
3.123
Konular:
459
Teşekkür (Etti):
1594
Teşekkür (Aldı):
1306
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ı
'TÜRKÇÜ - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
06/2017
Mesajlar:
2.064
Konular:
278
Teşekkür (Etti):
964
Teşekkür (Aldı):
493
Ticaret:
(0) %
28-05-2018 23:44
#5
Emeginize sağlık çok güzel bir konu olmuş.
firehackturk - ait Kullanıcı Resmi (Avatar)
Hevesli Üye
Üyelik tarihi:
08/2016
Nereden:
Distopya
Yaş:
23
Mesajlar:
9.751
Konular:
1230
Teşekkür (Etti):
5626
Teşekkür (Aldı):
2686
Ticaret:
(0) %
28-05-2018 23:54
#6
Ellerine sağlık kardeşim.
---------------------
Live together, die alone.

Eski ANKA moderatörü
M4K4R - ait Kullanıcı Resmi (Avatar)
Hevesli Üye
Üyelik tarihi:
03/2017
Mesajlar:
4.367
Konular:
249
Teşekkür (Etti):
149
Teşekkür (Aldı):
858
Ticaret:
(0) %
29-05-2018 00:00
#7
Eline sağlık !
v0rxa - ait Kullanıcı Resmi (Avatar)
Yeni Üye
Üyelik tarihi:
05/2018
Mesajlar:
956
Konular:
70
Teşekkür (Etti):
2
Teşekkür (Aldı):
162
Ticaret:
(0) %
29-05-2018 00:05
#8
Eline sağlık
'Creative - ait Kullanıcı Resmi (Avatar)
Hevesli Üye
Üyelik tarihi:
03/2017
Mesajlar:
3.165
Konular:
95
Teşekkür (Etti):
211
Teşekkür (Aldı):
1067
Ticaret:
(0) %
29-05-2018 00:11
#9
Kaliteli Konu. Eline Sağlık
---------------------
‘’ Hevesli üye yazdığına bakmayın hevesli değilim. Tşk.
xERBOY - ait Kullanıcı Resmi (Avatar)
Tamamen Askıya Alındı
Üyelik tarihi:
01/2017
Nereden:
Moscow
Mesajlar:
985
Konular:
146
Teşekkür (Etti):
638
Teşekkür (Aldı):
335
Ticaret:
(0) %
29-05-2018 00:15
#10
Eline sağlık uğraşılmış..

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler