- 11 Ağu 2018
- 2,181
- 6
- 6
Linux Shell Script // Liserjik
Bu konuda Linux sistemlerde shell script yazmayı anlatacağım. Öncelikle Linux Shell Script nedir ne değildir ona değinelim. Linux Shell Script kabuk tarafından çoklu komut ve işlemleri gerçekleştirebildiğimiz programdır.
İlk önce basit bir script yazıp inceleyelim.
# -> Burada yorum satırıdır. Bash terminalinde bu komut okunmayacaktır. Örnek olarak ,
#echo "LSD25" normalde ekrana LSD25 basması gerekirken # yüzünden komut okunmadı.
echo -> echo komutu ekrana yazı bastırmak için kullanılır.
Diğer bir shell'e geçelim.
read -> Bir input işlemidir. Kullanıcıda veri alamaya yarar. Biz CEVAP isminde bir değişkende okuduk.
$ -> Burada CEVAP içindekini echo işleminde kullanarak ekrana basmıştır.
Yukarıda değişkenlere değinmiştir. Onlarıda biraz inceleyelim.
Bir değişkeni sabit hale çevirmek için readonly komutunu kullanırız. Eğer onu değiştirmeye çalışırsak sadece okunur olduğunu belirtecektir.
Parametre içeren örneklere geçelim.
$1 , $2 , $3 -> Parametreleri sırasıyla okumaya yarar. Sınırı 9'a kadardır. 0 yoktur. Ona daha sonra değineceğiz.
$0 -> Burada kullandığimız script dosyasının ismini bize verdi.
$# -> Bize kaç parametre olduğunu verdi.
$* -> Linux'ta * hepsi anlamında $ ile başlayıp sonu herneyse anlamına gelir.
for -> Belli aralıklı bir döngüdür.
do ve done -> Döngüyü başlatır ve bitirir.
Yukarıdaki işlemde isim kümesi oluşturduk ve elemanları bir sıraya verdik. Ardından 0'ıncı elemanı ekrana bastırdık. { ve } sembolleri arasında elemanı belirttik. Eğer belirtmeyip sadece ISIM yazsaydık o zaman ilk elemanı yani Liserjik yeniden basacaktı. * ise bahsettiğimiz üzere hepsi anlamında.
Kaçış komutlarını kullanmak için echo komutuna -e ve ya -E parametresi eklenir.
Kaçış komutları ve anlamları:
\n -> Alt satıra geçer.
\t -> Tab kadar boşluk gider.
\a -> Uyarı sesi verir.
\r -> Aynı satıra tekrar yazar.
\\ -> \ işaretini yazdırmaya yarar.
Burada -e parametresine girmemize gerek yoktur. Aynı şekilde " ve ' içinde bu parametreyi eklememize gerek yoktur.
Fonksiyon oluştuduk ve onu çalıştırdık. () {} içinde sentaksı ayarladık.
Burada ilk fonksiyonda ikinci fonksiyonu çalıştırdık. İç içe iki fonksiyon.
Bash komutlarınıda kullanabiliriz. Bunun için 755 olarak yetkilendirmemiz gerek scripti.
chmod 755 [script_adi]
Coreutils komutları dışında diğer komutlarıda çaliştırabiliriz. Örnek python, pip, gcc vb.
main.cpp içinde Merhaba yazacak kodlar mevcut.
Temel bash özelliklerinide kullanabilirz.
Bu konuda Linux sistemlerde shell script yazmayı anlatacağım. Öncelikle Linux Shell Script nedir ne değildir ona değinelim. Linux Shell Script kabuk tarafından çoklu komut ve işlemleri gerçekleştirebildiğimiz programdır.
İlk önce basit bir script yazıp inceleyelim.
Kod:
#24.04.19 / 14.38
#Shell Script
echo "Liserjik was here."
# -> Burada yorum satırıdır. Bash terminalinde bu komut okunmayacaktır. Örnek olarak ,
#echo "LSD25" normalde ekrana LSD25 basması gerekirken # yüzünden komut okunmadı.
echo -> echo komutu ekrana yazı bastırmak için kullanılır.
Diğer bir shell'e geçelim.
Kod:
#tanisma
echo "İsminiz nedir ?"
read CEVAP
echo "Güzel isim , $CEVAP"
read -> Bir input işlemidir. Kullanıcıda veri alamaya yarar. Biz CEVAP isminde bir değişkende okuduk.
$ -> Burada CEVAP içindekini echo işleminde kullanarak ekrana basmıştır.
Yukarıda değişkenlere değinmiştir. Onlarıda biraz inceleyelim.
Kod:
ISIM="Liserjik"
YAS=1
_YAS=100
echo "Onun adı $ISIM, tam $YAS yaşında ancak $_YAS yaşında hissediyor. "
Kod:
$ ./shell
Onun adı Liserjik, tam 1 yaşında ancak 100 yaşında hissediyor.
Kod:
readonly _LSD25="Liserjik Asit Dietilamid"
_LSD25="Arsenik"
Bir değişkeni sabit hale çevirmek için readonly komutunu kullanırız. Eğer onu değiştirmeye çalışırsak sadece okunur olduğunu belirtecektir.
Kod:
$ ./shell
./shell: line 2: _LSD25: readonly variable
Kod:
echo "Forum : $1"
echo "Üyelik ismi : $2"
echo "Alanı : $3"
Kod:
$ ./shell THT Liserjik Moderasyon
Forum : THT
Üyelik ismi : Liserjik
Alanı : Moderasyon
$1 , $2 , $3 -> Parametreleri sırasıyla okumaya yarar. Sınırı 9'a kadardır. 0 yoktur. Ona daha sonra değineceğiz.
Kod:
echo "Script dosya ismi $0"
echo "Kaç parametre girildi : $#"
Kod:
./shell ISS Moderasyon THT Liserjik
Script dosya ismi ./shell
Kaç parametre girildi : 4
$# -> Bize kaç parametre olduğunu verdi.
Kod:
for DEGER in $*
do
echo "$DEGER"
done
$* -> Linux'ta * hepsi anlamında $ ile başlayıp sonu herneyse anlamına gelir.
for -> Belli aralıklı bir döngüdür.
do ve done -> Döngüyü başlatır ve bitirir.
Kod:
$ ./shell 1 2 3 4 5 6
1
2
3
4
5
6
Kod:
ISIM[0]="Liserjik"
ISIM[1]="WhiteRed"
ISIM[2]="'PALA"
ISIM[3]="'Tranquila"
#Ve Diğer Dostlarım
echo "Benim adım ${ISIM[0]}"
echo "Ekip : ${ISIM[*]}"
Yukarıdaki işlemde isim kümesi oluşturduk ve elemanları bir sıraya verdik. Ardından 0'ıncı elemanı ekrana bastırdık. { ve } sembolleri arasında elemanı belirttik. Eğer belirtmeyip sadece ISIM yazsaydık o zaman ilk elemanı yani Liserjik yeniden basacaktı. * ise bahsettiğimiz üzere hepsi anlamında.
Kod:
$ ./shell
Benim adım Liserjik
Ekip : Liserjik WhiteRed 'PALA 'Tranquila
Kod:
echo "Merhaba \n THT"
echo -e "Merhaba \nTHT"
Kod:
$ ./shell
Merhaba \n THT
Merhaba
THT
Kaçış komutlarını kullanmak için echo komutuna -e ve ya -E parametresi eklenir.
Kaçış komutları ve anlamları:
\n -> Alt satıra geçer.
\t -> Tab kadar boşluk gider.
\a -> Uyarı sesi verir.
\r -> Aynı satıra tekrar yazar.
\\ -> \ işaretini yazdırmaya yarar.
Kod:
echo "En sevdiğim şarkıcı Ke\$ha'dır"
Kod:
En sevdiğim şarkıcı Ke$ha'dır.
Kod:
Yardim(){
echo "Daha fazla bilgi için Turkhackteam.org"
}
Yardim
Kod:
$ ./shell
Daha fazla bilgi için Turkhackteam.org
Kod:
Yardim(){
echo "Daha fazla bilgi için Turkhackteam.org"
Tamam
}
Tamam(){
echo "Anlaşıldı.
}
Kod:
$ ./shell
Daha fazla bilgi için Turkhackteam.org
Tamam
Burada ilk fonksiyonda ikinci fonksiyonu çalıştırdık. İç içe iki fonksiyon.
Kod:
touch main.py
ls
rm -irf main.*
ls
Kod:
./shell
indez.htm main.asm main.pl shell
indez.htm main.asm main.pl main.py shell
indez.htm shell
chmod 755 [script_adi]
Coreutils komutları dışında diğer komutlarıda çaliştırabiliriz. Örnek python, pip, gcc vb.
Kod:
g++ main.cpp -o run
./run
main.cpp içinde Merhaba yazacak kodlar mevcut.
Kod:
$ ./script
Merhaba
Kod:
g++ main.cpp -o run && ./run.exe
Kod:
$ ./script
Merhaba