6
Konuya ait anahtar kelimeler : Shell çalışma prensibi, Fork, SubShell,Shell Script dosyası Shell Çalışma Prensibi : Kullanmış olduğumuz Terminal(Sh-Bash-Csh vb..) İngilizcede "fork" dediğimiz şekilde yani çatallayarak çalışma mantığına sahiptir. Örneğin, siz bir Terminal açtınız ve bir komut adını yazarak çalışmasını sağladınız. Şu anda önünüzde bir tane Terminal ekranı var fakat onun arkaplanında yazmış olduğunuz programı çalıştıran başka bir tane daha Shell(SubShell) açılmış oldu. Çatallanmış oldu. Bu sayede aynı anda Terminal de bir çok işlem yapabilirsiniz. Bir komutun arkaplanda çalıştırılması için komut sonuna ampersand işareti (&) eklenir. Bunun anlamı "sen arkaplanda çalış kendini bana gösterme" anlamına gelmektedir. Ardından bu komut SubShell-ChildShell(alt Shell diyebiliriz.) de çalışır ve işlemler bittikten sonra tekrardan Parent(Ana Shell) komut satırına dönüş yapılır. Bazen öyle karmaşık kod blokları oluşturursunuz ki, komutların çıktılarını yada hatalarını ön planda görmek istemezsiniz. Kullanım : Komut(lar) & Kullanımı yukarıdaki şekilde olmaktadır. Şimdi aşağıdaki örnek komutları Terminal'de çalıştıralım sonuçlarını gözlemleyelim. Terminal komut satırına "echo Merhaba & echo Selam" yazdığımız zaman normal olarak önce ekrana "Merhaba" sonra da "Selam" yazılacak. Peki bunu bir gerçekleştirelim.
[alax@alax ~]$ echo Merhaba & echo Selam [1] 1453 Selam Merhaba [alax@alax ~]$
Ooops, yukarıda önce "Merhaba" daha sonra "Selam" yazması gerekiyordu. Fakat bu normal şartlarda öyle yorumlanabilir. Çünkü ampersand işaretini "echo Merhaba" komutundan sonra kullandık yani bu komuta "sen arkaplanda çalış şimdilik, dedik", sonraki "echo Selam" komutundan sonra "&" işareti kullanmadığımız için o hemen öne geldi, o an aktif olan Terminal ekranına yazdı arka plandaki işlemler biter bitmez sonucu aktif olan Terminal'de yazdı. Üstte gördüğünüz numara ise arkada çalışan Terminal'in Process ID'si(PID), yani sistemde çalışan programın bir nevi kimlik numarasıdır. Kısaca, sizin önünüzde bir adet Shell vardır, o Shell ile arkaplanda başka Shell daha açılıp çalıştırılabilir. Evet "Forking"-"Çatallama" çalışma sistemini bu şekilde yorumlayabiliriz. Bu durum ileriki derslerimizde daha net anlaşılacaktır. Shell Script Dosyası : Şimdiye kadar bazı komutları ve kullanımlarını gördük. Elimizde elliye yakın komuttan oluşan bir komut dizisi olsun. Öyle ki, alt alta elli tane komut işleniyor ve kullanıcıdan bazı bilgileri alıp yorumlayarak bir çıktı üretiyor. Peki bu durumda ne yapacağız? Her zaman elli adet komut mu yazacağız? Tabi ki hayır. Kendimize bir adet script dosyası oluşturup komutlarımızı bu dosya içerisine kaydedeceğiz, ve ne zaman istersek o zaman sadece script dosyamızın adını yazdıktan sonra komutlarımızı çalıştıracağız. Unix/Linux sistemlerde Shell Script dosyası uzantısı Shell tipine göre değişmektedir, Bourne Shell için bu uzantı " sh "dir. Örneğin "script.sh" dosyası Shell komutlarından oluşan bir script dosyasıdır. Oluşturması ve kullanması çok kolaydır. Komutları bir dosya içerisine kaydedin ve dosya adı uzantısı ".sh" olacak şekilde kaydedin. Tabi bunu yapmanız şart değil fakat düzenli olabilmek ve anlaşılabilmek için bu şekilde çalışmalısınız. Dosya ismini ".sh" uzantısı ile kaydetmeden de çalıştırabilirsiniz, fakat sistemin dosyayı script dosyası olarak tanıması için böyle yapmanız gerekmektedir. Son olarak dosyaya çalıştırılma izni verin ve çalıştırın. Hepsi bu. Şimdi lütfen Terminali kullanarak, bir adet " tux " adında klasör, "tux" klasörünün de içerisinde "script" adında klasör oluşturunuz. Daha sonra "script" klasörüne girerek "script1.sh" adında bir adet dosya oluşturunuz, ve aşağıdaki kodları bu dosyaya yazınız, kaydediniz. Bunun için herhangi bir text editör kullanabilirsiniz.(Gedit, Kwrite, Gvim vb..).
#!/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
Evet arkadaşlar yukarıdaki kodları lütfen "script1.sh" script dosyasına YAZINIZ ve kaydediniz. Bundan sonra derslerimize "tux" adlı klasör içerisinde devam edeceğiz. Bu yüzden bu klasörü ders takibi için sakın silmeyiniz.