12
Konuya ait anahtar kelimeler : Shell script çalıştırma, Unix/Linux programlama Shell açarak "tux" adlı klasör içerisinde "script" klasörüne girelim.
[alax@alax ~]$ cd ~/tux/script [alax@alax script]$ ls script1.sh [alax@alax script]$ ls -l scrip* -rw-r--r-- 1 alax alax 0 Oct 21 00:22 script1.sh [alax@alax script]$
Gördüğümüz üzere script klasörü içerisinde bir adet "script1.sh" adında script dosyamız bulunmakta ve bu dosyamız herhangi bir kullanıcı için çalıştırılabilir değil. Ders 6 da yazmış olduğumuz script, eğer sizde yok ise Ders 6 ya bakınız ve "script1.sh" adında script dosyasını oluşturun. Shell script çalıştırma : Yazmış olduğumuz script dosyalarını aşağıdaki gibi çalıştırabilirsiniz.
  • "sh script_adi.sh" yada "bash script_adi.sh"
  • ./script_adi.sh
İlk kullanım da çalıştırmak istenilen Shell çeşidi adı ve dosya tam adı. İkinci kullanım ise en sık kullanılan ve o an aktif olan Shell de çalıştırma komutudur. Daha önceki derslerimizde de belirttiğimiz üzere herhangi bir dosyanın çalıştırılma izni olmadan dosyayı çalıştıramayız. Şimdi dosyamızı iki şekilde de çalıştıralım.
[alax@alax script]$ sh script1.sh Merhaba ilk scriptimiz burada başlıyor.. Selam alax ! Şu anda Terminal in aktif çalışma dizini: /home/alax/tux/script Bu ilk değişkenimiz: kırmızı Bu ikinci değişkenimiz: 1337 Tekrar Shell ekranına dönüyorsunuz... Bye Bye.. [alax@alax script]$
İkinci kullanım:
[alax@alax script]$ ./script1.sh bash: ./script1.sh: Permission denied [alax@alax script]$
İkinci uygulamamızda "Permission denied" erişim engeli nedeniyle scriptimizi çalıştıramadık. İlk komutumuzda script sorunsuz olarak çalıştı gibi görünüyor olabilir fakat öyle değil, ilk komut ile script çalıştırıldığı zaman sadece read(okuma) türü işlevler gerçekleştirilir. Erişim engeli hala aktiftir. Text editör : Script düzenlemek için gedit,kwrite,vim,gvim,emacs,eclipse vb.. herhangi bir metin editörü kullanabilirsiniz. Biz örneklerimizde şu an "nano" yu kullanacağız. Eğer sizde mevcut değilse lütfen sisteminize kurunuz. nano kullanımı: nano dosya_adi Keydetmek için "Ctrl + O" tuşlarına ve ENTER, çıkmak için ise "Ctrl + X" tuşlarına basmanız gerekmektedir.
[alax@alax script]$ nano script1.sh #!/bin/bash echo "Merhaba ilk scriptimiz burada başlıyor.." echo echo "Selam $USER !" echo "Şu anda Terminal in aktif çalışma dizini:" echo pwd echo degisken1="kırmızı" degisken2="1337" echo "Bu ilk değişkenimiz: $degisken1 " echo echo "Bu ikinci değişkenimiz: $degisken2 " echo echo "Tekrar Shell ekranına dönüyorsunuz..." echo "Bye Bye.." exit [alax@alax script]$
Yukarıdaki ekran göründüğü zaman kaydet(Ctrl+O) ardından Enter ve çıkış(Ctrl+X) yaparak çıkalım. Unix/Linux sistemlerde script yazdığınız zaman ik satırına hangi Shell çeşidine göre yazdığınızı belirtmelisiniz. Bizim örneğimizde Bash ile çalıştığımız için #!/bin/bash yazdık. Eğer scriptimizi "sh" (Bourne Shell) ile çalışacak şekilde yazmış olsaydık o zaman, #!/bin/sh şeklinde yazmamız gerekecekti. Bu belirtmeyi yaptıktan sonra bir alt satıra inerek komutlarımızı yazabiliriz. Script yazma mantığı : Script dosyası içerisine komutları yazarken, normalde Shell de nasıl komutlarımızı yazıyorsak aynı şekilde yazıyoruz. Hepsi bu.. Her komut bir satırda çıktı vermeye başlar. Sırası ile hangi komutların çalışmasını istiyorsanız o komutları yazın ve kaydedin. Ardından script dosyasına çalıştırılma izni veriniz ve scripti çalıştırınız. Şimdi script1.sh dosyasını açalım ve içerisindeki herşeyi sildikten sonra ilk komutlarımızı yazalım.
[alax@alax script]$ nano script1.sh #!/bin/bash echo "Merhaba Dünya"
Dosyamızın son hali bu şekilde olmalı. Eğer nano kullanamıyorsanız başka bir text editör kullanabilirsiniz. Şimdi scriptimizi çalıştıralım.
[alax@alax script]$ bash script1.sh Merhaba Dünya [alax@alax script]$
Gördüğünüz gibi scriptimiz çalıştı. Şimdi scripti tekrar açalım ve scriptin çalışma dizini içerisinde bir adet "penguen" adında bir dosya oluşturma komutunu ekleyelim ve aynı şekilde çalıştıralım.
[alax@alax script]$ nano script1.sh #!/bin/bash echo "Merhaba Dünya" mkdir penguen
Şimdi çalıştıralım.
[alax@alax script]$ bash script1.sh Merhaba Dünya bash: ./script1.sh: Permission denied [alax@alax script]$
Gördüğünüz gibi hata aldık. Çünkü script dosyamızın çalıştırma izinleri kapalı. Bu kullanımı sadece görmeniz için kullandık. Sonraki uygulamamızda daha kısa olan "./" çalıştırma yazımını kullanacağız. Şimdi dosyamızı ./ (nokta ve eğik çizgi)ile çalıştıralım ve ardından dosyamıza çalıştırılma izni verdikten sonra tekrar çalıştıralım. Burada dikkat etmeniz gereken noktalar, script dosyasının ilk satırına herzaman çalışılan Shell çeşidi(#!/bin/bash) yazmak ve nokta-eğikçizgi-scriptadı yazımında arada hiç boşluk olmadığına emin olmaktır. Yanlış kullanım: ./ script1.sh Yanlış kullanım: . /script1.sh Yanlış kullanım: . / script1.sh DOĞRU Kullanım: ./script1.sh
[alax@alax script]$ ./script1.sh Merhaba Dünya bash: ./script1.sh: Permission denied [alax@alax script]$ chmod u+x script1.sh [alax@alax script]$ ./script1.sh Merhaba Dünya [alax@alax script]$
Evet hiçbir hata ile karşılaşmadık ve scriptimiz çalıştı. Şimdi oluşturulan "penguen" adlı klasörü siliniz.