21 Şubat 2012 Salı

Shell Scripting - 1

Merhaba, bu defa son zamanlarda sürekli karşılaşmam nedeniyle Shell Scripting konusuna dair aldığım ufak notlarımı paylaşacağım.



Merhaba Dünya (test.sh):
#!/bin/sh
echo "Merhaba Dünya!"

Öncelikle dosyayı kaydettikten sonra chmod 755 test.sh komutu ile dosyayı çalıştırılabilir yapıyoruz ve ./test.sh ile çalıştırıyoruz. Dosya niteliğini #!/bin/sh satırı ile tanımlıyoruz. Tahmin ettiğiniz gibi echo "Merhaba Dünya!" satırı ile de ekrana çift tırnak içerisindeki şekliyle yazdırıyoruz.

Echo Yöntemleri:
#!/bin/sh
# Yorum satırı!
echo "Merhaba Dünya" # bu satır da yorumdur!
echo "Merhaba Dünya"
echo "Merhaba * Dünya"
echo Merhaba * Dünya
echo Merhaba Dünya
echo "Merhaba" Dünya
echo Merhaba " " Dünya
echo "Merhaba \"*\" Dünya"
echo `merhaba` dünya
echo 'merhaba' dünya

Çalıştırıp ekrana gelecek çıktıyla sanırım bazı detayları daha iyi çözeceksiniz. Burada 4 farklı detay var;

  1. Çift tırnak (") ve tek tırnek (') içerisinde belirtilen satırlar olduğu görüntü ile ekrana yazdırılır.

  2. Ters slash (\) kendisinden sonraki karakterin işlevini kaldırır.

  3. Yıldız (*) karakteri bulunduğu klasördeki dosyaları listeler.

  4. Ters tırnek (`) içerisindeki karakterleri çalıştırır (Alt GR + ,)  veya (Ctrl + Alt + ,) kombinasyonları ile yazılır.


Değişken tanımlama:
#!/bin/sh
DEGISKEN="Değer.."
echo $DEGISKEN

 Komut satırında değişken tanımlama (degisken.sh):
#!/bin/sh
echo "Degişken: $DEGISKEN"
DEGISKEN="Değer1"
echo $DEGISKEN

Yukarıdaki satırları degisken.sh adıyla kaydedin, chmod'larını ayarlayın ve daha sonra aşağıdaki gibi çalıştırın:
$ chmod 755 degisken.sh
$ DEGISKEN="Değer 2"
$ export DEGISKEN
$ ./degisken.sh

Komut satırında tanımlanan Değer 2 değeri öncelikle ekrana yazdırılacak ve daha sonra degisken.sh içerisindeki Değer 1 değeri ekrana yazdırılacaktır. Bunun nedeni komut satırında iken önce Değer 2 tanımı yapılıp daha sonra da Değer 1 ile aynı değişkene yeni değer atanmasıdır. Burada export ile yapılan tanımlamanın RAM'de tutulduğunu degisken.sh içerisindeki değerin ise dosya çalışmayı bitirdikten sonra silindiğini unutmamalısınız. Ekrana tekrar echo $DEGISKEN yazdığınız da ilk tanımın hala geçerli olduğunu göreceksiniz.

Değişkeni ekrandan almak (sor.sh):
#!/bin/sh
echo "Adınız nedir?"
read ADI
echo "Merhaba $ADI"
echo "Olusturulan dosya ${ADI}_dosya"
touch "${ADI}_dosya"

Burada ise biraz daha etkileşimli bir işlem yaptık. Öncelikle kullanıcının adını sorduk ve girdiği değerin sonuna _dosya ekleyerek bir dosyala kaydettik.

Kopyalama ve Taşıma:
$ cp /tmp/* /etc/tmp/
$ cp /tmp/*.html /etc/tmp/

$ mv /tmp/* /etc/tmp
$ mv /tmp/*.html /etc/tmp/

İlk satır da cp (copy) komutuyla /tmp dizinindeki tüm dosyaları /etc/tmp dizinine kopyaladık.
İkinci satır da /tmp dizinindeki tüm html uzantılı dosyaları /etc/tmp dizinine kopyaladık. Aynı mantıkla mv (move) komutuyla önce tüm dosyaları daha sonra da sadece html uzantılı tüm dosyaları taşıdık.

Bugünlük bu kadar başlangıç yeter diye düşünüyorum. Devamını sonraki makalelerimiz de yayınlamaya devam edeceğim.

Kaynak: http://steve-parker.org/sh/sh.shtml

0 yorum:

Yorum Gönder