İPUCU

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

Seçenekler

Bash Scripting/Ders2 ~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) %
31-05-2018 19:27
#1
Bash Scripting/Ders2 ~CyberX #StajyerAsistanKulübü#







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



--------------------- Linux'a Dair Herşey..
Konu CyberXhackk tarafından (31-05-2018 19:43 Saat 19:43 ) değiştirilmiştir.
HeRTeS, Zenotron Teşekkür etti.
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) %
31-05-2018 19:50
#2
1-2 gün yazmaya uğraştın okumak 5 dakikamı aldı Ellerine sağlık.
SeNZeRo - ait Kullanıcı Resmi (Avatar)
Green Team Lideri
Üyelik tarihi:
09/2016
Mesajlar:
4.974
Konular:
441
Teşekkür (Etti):
64
Teşekkür (Aldı):
1193
Ticaret:
(0) %
31-05-2018 20:11
#3
Eline emeğine 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) %
31-05-2018 20:16
#4
Ellerine sağlık.
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) %
31-05-2018 20:31
#5
Alıntı:
CH4M3´isimli üyeden Alıntı Mesajı göster
1-2 gün yazmaya uğraştın okumak 5 dakikamı aldı Ellerine sağlık.
Alıntı:
SeNZeRo´isimli üyeden Alıntı Mesajı göster
Eline emeğine sağlık.
Alıntı:
v0rxa´isimli üyeden Alıntı Mesajı göster
Ellerine sağlık.
Teşekkürler
--------------------- Linux'a Dair Herşey..
GoodIP - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2017
Nereden:
Linux
Mesajlar:
254
Konular:
24
Teşekkür (Etti):
43
Teşekkür (Aldı):
25
Ticaret:
(0) %
31-05-2018 21:04
#6
Konu düzenin hepsini okumamı sağladı patron... Eline Sağlık
furkanaltun9 - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
03/2018
Nereden:
Php
Mesajlar:
306
Konular:
10
Teşekkür (Etti):
7
Teşekkür (Aldı):
48
Ticaret:
(0) %
31-05-2018 21:05
#7
Eline Sağlık
okybet - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
02/2016
Nereden:
Sdney
Mesajlar:
166
Konular:
28
Teşekkür (Etti):
10
Teşekkür (Aldı):
9
Ticaret:
(0) %
31-05-2018 21:19
#8
Okurken öldüm öldüm dirildim. İftarda yediğimi eritti resmen eline saglik
--------------------- Sɑhipsiz olɑn vɑtɑnın bɑtmɑsı hɑktır,Sen sɑhip olursɑn, bu vɑtɑn bɑtmɑyɑcɑktır

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) %
31-05-2018 21:21
#9
Alıntı:
GoodIP´isimli üyeden Alıntı Mesajı göster
Konu düzenin hepsini okumamı sağladı patron... Eline Sağlık
Alıntı:
furkanaltun9´isimli üyeden Alıntı Mesajı göster
Eline Sağlık
Alıntı:
okybet´isimli üyeden Alıntı Mesajı göster
Okurken öldüm öldüm dirildim. İftarda yediğimi eritti resmen eline saglik
İşinize yaradıysa ne mutlu bana (:
--------------------- Linux'a Dair Herşey..
Greendex - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
12/2017
Mesajlar:
752
Konular:
56
Teşekkür (Etti):
37
Teşekkür (Aldı):
225
Ticaret:
(0) %
31-05-2018 21:27
#10
Eline saqlıq

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ı