Yazan : Şadi Evren ŞEKER
Bilgisayar bilimlerinde kabuk kelimesi daha çok çevreleyici, kaplayıcı anlamında kullanılmaktadır. Örneğin işletim sistemlerinde çekirdeğin (kernel) dış dünya ve kullanıcılar ile iletişim kurmasını sağlayan işletim sisteminin parçasına kabuk (shell) adı verilmektedir.
İşletim Sistemlerinde Kabuk
Kabuğun en temel görevini bir komtu satırı (command line interface) olarak tanımlayabiliriz. Örneğin DOS, LINUX veya UNIX işletim sistemlerinde komutları alan ve bu komutlar dahilinde çekirdeğe işlemleri geçiren modül olarak düşünülebilir.
Örneğin basit bir taşıma işlemi:
mv a.txt b.txt
komuduyla yapılabilir. Bu dosya taşıma işlemi sırasında dosya sisteminde bazı bilgilerin değişitirimesi söz konusudur (örneğin FAT Tablosundaki kayıt ya da inode değerleri gibi) bu değişklikler çekirdek tarafından yapılır.
komut satırnın daha gelişmişi olarak kabul edilebilen Grafik Arayüzü (Graphical User Interface, GUI) eklentileri ile kabuğun yaptığı işlerde pek farklılık olmasa da kullanıcıya sunulan işlemlerin şekli ve kullanıcının işlem yapabilme kabiliyeti arttırılmıştır. Ancak temelde bir işletim sisteminin çekirdeği ile kabuğun ilişkisi aynıdır.
Kabuk programlama (shell programming) ismi verilen bir programla tipi de kullanıcı işlemleri yapılan bu kabuktaki işlemleri bir program dahilinde kullanıcı iletişimi olmaksızın çalıştırmayı amaçlar.
DOS üzerindeki bat dosyaları (Batch files) ve linux ve unix üzerindeki shell programming ve windows üzerindeki vbscript ve javascript (csh ve jsh) bu tip kabuk programlamaya örneklerdir. Burada kabuğun yaptığı işlemler kullanılarak yine kabuğun yaptığı birleştirilmiş işlemler elde edilir. Örneğin sistemdeki her kullanıcının dizinlerinin içerisinde bir adet yardım dosyası koymak isteyelim. bunu yapan hazır bir komut yoktur. Ancak bir dosyayı kopyalayan komudumuz ‘cp’ her kullanıcı için tekrar tekrar çalıştırılarak bu işlem yapılabilir. İşte bir sistem yöneticisi örneğin 100 kullanıcı için teker teker bu kopyalama işlemini yapmak yerine bir kabuk programı yazarak bu işlemi yaptırmaktadır.
linuxdeki read komutu windows batch file da hangi komuta denk gelir
örnek
read telefonara
grep -wi $telefonara telefonkaydi.txt
sanırım bir ortam değişkenine değer okutmak istiyorsunuz.
Dos kurulu bilgisayar şu anda erişimimde yok ancak set komutu olması lazım.
set DEGISKEN = deger
echo %DEGISKEN%
şeklinde olacaktı. yani atama sırasında % işaretleri olmadan ancak değişkenin değerine erişirken % işaretleri ile kullanmalısınız. Şayet batch dosyasından okuyorsanız $1 $2 şeklinde verilen parametreleri okuyabilirsiniz (burasi linux ile aynı)
Gelelim sorunuzun can alıcı noktasına, şayet herhangi bir anda durup kullanıcının bir değer girmesini istiyorsanız (ve girilen değeri okumak elbette) Bu komut ne yazık ki klasik DOS komutları arasında yok. Ancak windows 2000 ve XP üzerinde set /p kullanılabiliyor.
set /p DEGISKEN = [soru metniniz]
yukarıdaki kullanımda köşeli parantez içi seçime bağlıdır.
Aslında yapılan işlem klasik bir set işlemi (daha önceki ile aynı) olmasına karşılık burada set komutu /p parametresi almakta ve prompt etmektedir, yani kullanıcının girdisini beklemektedir. Ancak dediğim gibi bu ne yazık ki klasik DOS’ta yok. Elbette bir alternatif C dili ile basit bir kod yazmak olabilir.
Başarılar
tesekkurler…
uyguladim sonuc basarili
set /p numara=TelefonNoAra:
find /i “%numara%” telefonkaydi.txt