MÜKS – 5 – Kabuksal ihtiyaçlar
(MÜKS dizisi hakkında genel bilgi, yasal uyarılar, vesaire için şuraya bakılabilir)
(Bu yazının Defter standartlarına uymaması gerekçesiyle, tekrar gözden geçirilmesi gerekmektedir. Yazarın aşk sarhoşluğundan sapıttığı varsayılabilir. Başınıza bir şey gelirse Defter sorumlu değildir.)
MS, Özgür Yazılım camiasını çekebilmek için nokta-net komut satırı arayüzü geliştiriyor. Arstechnica da benim gibi Windows’tan uzak yaşayanlar için oldukça ayrıntılı bir belge hazırlamış[ing].
Belgeye bakmadan önce, .net gibi bir ortam için hazırlanan bu kabuk dilinin nasıl olabileceği konusunda fikir yürütebiliriz.
Haliyle nesneye dayalı olacak. “Pipe” kavramı daha gelişmiş, kontrollü bir yapı kazanacak.
Muhtemelen Bash ve Perl’ün yanısıra Ruby, Python gibi dillerden ilham alacak.
İşlevsel özellikleri de yetim bırakmamış olmaları biraz şaşırtabilir.
Bir de SQL nanesi var, olmazsa olmaz.
Muhtemelen Mono’cular da Mono Shell (msh) çıkartırlar, MS msh’nin kodunu açmasa bile.
Ortak ata nesne kavramının (pipe vari) güzelliklerini ve .net yapısıyla bütünleşikliğini bir kenara bırakırsak, kabuk dilinin bu kadar karmaşık ve yetenekli olmasının bir yararı olup olmayacağı meçhul.
Bir dizindeki bütün dosyaları kopyalamak ya da taşımak için bash/ksh/csh kullanırsınız. Dosya isimlerinde düzenli ifade kullanarak toplu değişiklik yapmak için gene bunları kullanırsınız, muhtemelen sed awk vs ile birlikte. Bütün sabit disk bölümünde bir kelime içeren dosya aratacaksam bunun cevabı grep olmalı gene basit bir kabuktan çalışan. Yapay şekerlenmiş bir Python betiğinin en verimli sonucu vereceğini kimse hayal etmesin. Zaten bütün bu örnek alınan diller özgür, kodlar açık. Bu güne kadar kimse ((o)ca|s)mlshell, perlsh, rubysh yapıp da bunu yaygınlaştıramadıysa basit bir sebebi olsa gerek.
Bash’in için GTK/Gnome/QT/KDE yetenekleri olmasını kaç kişi isterdi ki?
Sanal dosya sistemleri
Açıkçası Bash’de olmayıp msh’de olan ve gerçekten önemli olan tek yeti “sanal dosya sistemleri”. Bu konuda ne mount ne de gereksiz yetkilendirme işkenceleri kurtarmıyor.
cp ftp://linux.org.tr/pub/debian/debian-3.1r0-i386.iso .
gibi komutlar yazabilseydik güzel olurdu. Yazık ki bunun çözümü çekirdek ya da C kütüphanesi seviyesinde olmak zorunda.
Görsellik
msh’de de göremediğim (ama bir gün olabilecek) ikinci eksiklik ise görsellik. Sonuçta komut satırını sevmemizin sebebi harflere olan bağlılığımızdan çok, klavyenin verimliliği ve çeşitli uygulamalar arasındaki etkileşimin kolaylığı.
Görselliğin özürlü olma şartı yok. Yani bir önceki örnekten devam edersek,
wcat http://www.bayazit.net/alphan/
bana Defter’i konsoldan gösterebilmeli. Bunlardan ikincisi, birincisinden oldukça zor görünüyor. Mevcut uygulamalar arasındaki etkileşimi farklı bir boyuta taşımak gerekiyor izlenimi uyandırıyor. (İsmini hatırlamadığım ama bu nedenle başarısız olmuş özgür bir uçbirim uygulaması vardı.) Pek sevmesem de bu noktada XML’den bahsetmemek olmaz.
Dosya yöneticilerinde Gecko tarzı gösteri motorlarının kullanılmasına karşı olan ben deniz, üzülerek gelişmiş bir çözüm için benzeri bir yöntemin kullanılması gerektiğini itiraf ediyorum.
Gecko zaten dosyaları ayırt edebiliyor, bu durumda şöyle komutların çıktılarını yorumlayabilir:
cat resim.png
Görüldüğü gibi mevcut pipe mekanizmasında ciddi değişiklik yapmaya gerek kalmayabilir. İlla anlamsız karakterler göreceğim diyenler için:
cat resim.png | xmlsarmala
gibi (şimdilik hayali) uygulamalar kullanılabilir. Bu durumda yukarıdaki wcat hayali uygulaması da wget -q -O -‘dan başka birşey olmaz.
Sonuç
- msh çağına uygun bir betikleme dili ama kabuk uygulaması için gereksiz özellikler barındırıyor. Betik dili olarak kullanışlı olabilse de özgür yazılım dünyasının dilleri bu işler için fazla fazla yeterli.
- Eski uygulamaların kullanılabilmesi açısından bash’in kendisinin çok bir değişikliğe ihtiyacı yok. Gerekli bazı değişiklikler farklı (çekirdek, kütüphane ya da uçbirim yorumlama) seviyesinde olmalı.