SHELL NEDİR?

Amiga ile beraberliğimizde sık sık CLI kullanmak durumundayız. Kopyalama yapma, içerik görme ve programları çalıştırmak için, Amiga'daki temel yol CLI. Gerçi Diskmaster ve Xcopy gibi programlar bizi CLI kullanmaktan alıkoyuyorsa da, herkes zaman zaman 1> mesajı ile uğraşıyor ve Amiga DOS ile en yakından haşır neşir oluyor. Dikkatli olanlarınız fark etmiştir; iki tür CLI penceresi var. Bunlardan biri klasik 1> mesajı veriyor. Burada yazı yazarken bir hata yaparsanız sile sile geri gelmek zorunda kalıyorsunuz ve bir yazdığınızı bir daha yazmak zorunda kalıyorsunuz. Shell (Bizim açıkladığımız SHELL değil) adı verilen ikincisi ise, biraz daha kullanışlı. Ok tuşları ile önceden yazdığınızı kullanabiliyor ve satır içinde serbestçe dolaşabiliyorsunuz. Hatta satırın başında hangi directory'de olduğunuz belirtiliyor. Burada kullandığınız dir, list, copy gibi emirler ise, çalışma disketinizin genelde c: directory'sinde bulunuyor. Rahatsız edici durum, bu emirleri her kullandığınızda ilk önce bu emirlerin disketten yüklenmesi ve sonra çalışması. Hele tek drive'ınız varsa ve başka bir disket ile ilgileniyorsanız, değiştir babam değiştir. İşte SHELL burada sorunlarınıza çözüm getiriyor. Kelime anlamı kabuk olan SHELL, bir dizi emri bünyesinde tutan bir çalışma ortamı. Aynen CLI gibi ama çok daha pratik, çünkü birçok emri hafızasında tutuyor. Böylece disketten yüklemelere gerek kalmıyor. SHELL SINIRLAMALARI

Amiga DOS'un execute komutunu kullanamıyorsunuz. Shell komutları ile aynı isimli bir programı çalıştıramıyorsunuz. Ayrıca SHELL yaklaşık 50 Kb kadar hafıza kaplıyor. Çalıştırabilmek için ARP.library kullanılıyor (Bu dosya LIBS: directory'sinde bulunmalı). ASCII kodu 127'den yukarı olan harflerle komut yazılamıyor. Bu kadarcık.

SHELL İMLASI VE KOMUTLARI Shell kullanılırken, normal yazışlara şu eklemeler yapılabilir. ^C CTRL-c, CTRL tuşu ile C'ye basmak anlamında $isim isim isimli bir değişken tanımlamak için kullanılır ; Komutları birbirinden ayırır >Dosya Çıkışı dosyaya yönlendirir !! Son emri çalıştırır !isim İçinde isim bulunan son emri çalıştırır !d İçinde son d bulunan emri çalıştırır.

F. Kağan Gürkaynak SHELL'de, bir satır 255 karakter alabilir. Şu tuşlar SHELL ile kullanılabilir: Yukarı/aşağı ok Bir önceki/sonraki emir Sol/Sağ ok Kursoru satırda ileri/geri hareket ettirir Shift-yukarı/aşağı ok Satır hafızasının başına/sonuna git Shift-sol/sağ ok Bir kelime sola/sağa Ctrl-A Insert veya Overwrite modu Ctrl-X Tüm satırı siler Help Komutlar hakkında bilgi verir SHELL KOMUTLARI Şu ana kadar anlatılanlardan belki SHELL'in editör benzeri bir şey olduğunu düşünüyorsunuz. Temel olarak Shell'in CLI'dan farkı pek yok. Sadece kullanması daha rahat. Shell'in kendine has emirleri var. Birçok temel işlemi bunlarla yapmak mümkün. Ancak CLI'dan yapılan her şey, Shell'den de yapılabilir. Bir emir yazıldığı zaman Shell ilk olarak Alias adı verilen kullanıcı tarafından tanımlanan emirleri arar. Burada tam uyum olması gerekir. Daha sonra SHELL kendi komut listesini arar, hatta kısmen bulduğu komutlara bile bakar (Resident yerine resi demek yetiyor). Hafızada kullanıma hazır olan program listesi araştırılır. Eğer hala bulunamamışsa diskete geçilir, bulunulan directory, C: ve path aranır. Bazen WildCard adı verilen karakterlerle aynı isimde dosyalar ararız. Mesela sonu pic olan dosyaları görmek istiyoruzdur. SHELL'de kullanılan Wildcard'lar şunlar: ? Tek bir harf için * Herhangi bir dizi için .../* Tüm alt directory'leri aramak için ~ ve ! Hariç tutmak için & Her dosyayı işlerken sormak için Örnekler: DPAINT? DPAINT ile başlayıp sadece bir karakteri olan dosyalar KA* KA ile başlayan tüm dosyalar DF0:.../!.info DF0:'da (Alt directory'ler dahil) bulunan ve sonu .info ile BİTMEYEN dosyalar &.resim .resim ile biten tüm dosyalar, ancak işletmeden önce sor Gelelim komutlara, önemli olan komutların çoğunu (Hani neredeyse hepsini) ve ne işe yaradıklarını anlatmaya çalışacağım. Emrin yanında parantez içinde bazen örnekler vermeye de gayret edeceğim.

ABORTLINE: Eğer Shell'de uzun bir komut dizisi yazacak olur ve komutlar dizisini aniden bölmek isterseniz kullanılacak emir.

ADDBUFFERS: (addbuffers df0: 10) Herhangi bir drive'a buffer hafıza atamak için kullanılır. Her buffer 512 byte hafızanızı götürür. Buffer disket erişim hızını arttırır.

ALIAS: (Alias dm DiskmasterV 1.3) Uzun komutları kısaltmak için kullanıcının emir tanımlamasını sağlar. Yukarıdaki örneği yazdıktan sonra artık dm diyerek DiskmasterV 1.3 demiş olursunuz.

ASET: (ASET INCLUDE dh1:aztec/include) Bazı programlar için gerekli olan path tanımlamalarını yapar. Özellikle AZTEC C ve ARP programları için tanımlamalarda kullanılır. Örnek C için Include dosyalarını arayacağı directory'i belli ediyor.

ASSIGN: (Assign fonts: df1:fonts) Amiga'da fiziksel yani ulaşılabilir directory'ler ve de mantıksal (logical) drive'lar vardır. Bu mantıksal drive'lar, Assign emri ile istenen yere tanımlanabilirler. Örnekte FONTS: mantıksal drive'ı çeşitli programlar tarafından kullanılan karakter setlerinin nerede olduğunu belirler. Assign ile bu drive df1:fonts'a aktarılıyor, artık burada belirtilen karakter setleri kullanılabilecektir.

BASENAME: Bir path ile belirtilen isimden path'i ayıklar. CAT: Verilen dosyaları ekrana basar, -n eki ile satır numaraları eklenebilir.

CD: Bir directory'den diğerine geçmek için kullanılır. .. ile bir directory geriye (yukarıya-Parent) geçilebilir.

CLOSE: Open ile açılmış bir dosyayı kapatır. COPY: Dosya kopyalama amacıyla kullanılıyor, -r ile tüm alt directory'ler beraber kopyalanır, -u eğer kopyalanacak yerde kopyalanması istenen dosyanın daha yeni tarihli bir kopyası yoksa kopyalar.

DATE: Sistem gününü ve zamanını okumak veya değiştirmek için kullanılır. Eğer parametre verilmezse, saati ve günü gösterir.

DEC: (DEC abc 4) Verilen değişkenin değerini, bir veya belirtilen değerde azaltır.

DELETE: Belirtilen dosyaları siler, -r seçeneği ile tüm alt directory'ler beraber silinebilir, -p seçeneği ise silmeye karşı korunmuş dosyaları da siler.

RM: Aynı işi görür. DIR: Verilen adreste bulunan dosyaları sıralar -s dört sütuna kısa bir sıralama -d sadece directory'leri gösterir -f sadece dosyaları gösterir -c tüm isimleri aynı renkte basar -n sadece isimleri yazar LS: Aynı işlemi yapar. DISKCHANGE: 5.25 disket sürücülerinde disket değişimini belli edebilmek için kullanılır.

ECHO: Ekrana bir yazı yazmak için temel komut, -n seçeneği kullanılırsa yeni bir satıra geçmez.

ELSE: Else deyimi, her zaman bir IF deyimini izler. Şu şekilde kullanılır: if-f dosya ; else ; echo "dosya yok"

ENDIF: Bir if ifadesinin sonunu belirtir. EXEC: Bu komut bir programı shell'den çalıştırmaya yarar. Programı doğrudan çalıştırmaktan farkı, değişken isimlerin parametre olarak kullanılabilmesidir.

FAULT: AmigaDos'taki gibi verilen hata numarasına göre hata mesajını yazar.

FILENOTE: AmigaDos, dosya bilgilerini (file comment) oluşturmaya yarar. •

FLIST: Open komutu ile açılmış dosyaların dosya numaralarını gösterir.

FLTLOWER: Beraberinde kullanılan bir komutun çıktısını küçük harflerle yazar. Örneğin dir |fltlower dir komutunun çıktısını küçük harflerle verir.

FLTUPPER: Fltlower ile aynı, fakat büyük harfe çevirir. FOREACH: Diyelim ki, sonu .iff olan resim dosyalarımız var. Bunları gösterebilen show komutunun bulunduğunu kabul edelim. Tüm resim dosyalarını göstermek, foreach komutu ile mümkündür: foreach i ( *.iff) show $i

FOREVER: Beraberinde girilen komutları, AC'ye basılmadıkça ve If komutu bir hata mesajı vermedikçe sonsuza dek çalıştırır.

FORLINE: Belirtilen ASCII dosyasındaki her satır için, belirtilen komutu çalıştırır. Sistem değişkenlerinden olan linenum o anki satır numarasını içerir. Kullanımı şunun gibidir:

forline i df0:dosya "echo satır no :$_linenum = $i"

FORNUM: "Fornum değişken n1 n2" komut şeklinde kullanılır. Bu satırın yapacağı iş, n1'den n2'ye kadar olan sayıları "komut" komutuna parametre olarak gönderip çalıştırmaktır.

GOTO: "Goto etiket" şeklinde kullanılır. Sadece bir komut dosyası (Script) içinde kullanılabilir.

HEAD: "Head dosyaadı sayı" şeklinde kullanılır, dosyaadı dosyasının, ilk sayı tane satırını gösterir. Sayı girilmezse 10 girilmiş kabul edilir.

HELP: Komut listesini gösterir. HOWMANY: Sistemde kaç tane Shell çalıştığını gösterir. HTYPE: Type gibi bir dosyayı ekrana yazar. Fakat çıktı ASCII değil hexadecimaldir.

IF: AmigaDos'taki gibidir. INC: Kullanımı, "inc değişken artış" şeklindedir. Bu satır, 'değişken' değişkenini 'artış' kadar arttırır. Artış belirtilmezse artış=1 alınır.

INFO: Sistemin kendi info komutu gibidir. INPUT: Belirtilen değişkene STDIN'dan okunan bilgi yerleştirilir.

JOIN: "join kısım1 kısım2 kısım3 toplam" satırı, kısım1, kısım2 ve kısım3'ü birleştirip toplam adıyla bir dosya oluşturur, -r seçeneğini kullanmadığı takdirde, yeni oluşturulacak dosya adında zaten bir dosya bulunuyorsa, bir hata mesajı alınacaktır.

LABEL: Goto ile kullanılmak üzere etiket tanımlamaya yarar. Örneğin: Label erh

LS: Dir ile eşanlamlıdır. MD: Mkdir ile eşanlamlıdır. MAN: "Man komut" deyimi, 'komut' hakkında bilgi verir. MEM: CHIP ve FAST (eğer varsa) hafızaları ile ilgili bilgiler verir.

MKDIR (MD): Yeni bir (veya daha çok) directory yaratmaya yarar.

MV: Rename ile eşanlamlıdır. OPEN: Kullanımı, "open dosyaadı mod sayı" şeklindedir, mod, ya "r" ya da "w" olmalıdır, "r" okunacak dosyalar için, "w" yazılacak dosyalar için kullanılır. Sayı 1 ile 10 arasında olmalıdır.

PATH: Şu an komutlar için geçerli olan path'i yazar. Shell'in 4.03 versiyonunda daha bu emirle yeni path'ler tanımlanamıyor. PRI: (Pri 1 5) Belirtilen Task'ın önceliğini belirtilen sayıya çıkarır. Daha yüksek öncelikli CLI'lardan çalışan programlar, düşük öncelikli programlardan önce çalışır. Örnek, 1 numaralı CLI penceresinin önceliğini 5'e çıkarır. 10 üzerinde veya -10 altındaki değerler pek işe yaramaz.

PROTECT: (Protect dosya rwe) Belirtilen dosyaya verilen koruma bitlerini ekler: h, s, p, a, r, w, e, d. Hiç bir bit vermezseniz, tüm bitleri siler. Örnekteki dosyaya okunabilir, yazılabilir ve çalıştırılabilir bitleri eklenir. Bu dosya Delete emri ile silinemez.

PS: Çalışan taskları sıralar. PWD: Bulunulan directory'nin tam ismini verir. QUIT: Shell'den çıkmayı sağlıyor. RBACK: Giriş yaptırmadan bir program çalıştırmaya yarıyor. RENAME: Verilen dosyanın ismini değiştirmeye yarar. RESIDENT: Amiga DOS'taki emirle neredeyse aynı. Ancak -d operatörü ile resident yapılacak program ancak kullanıldığında hafızaya alınacaktır. Eğer hafıza ile sorunlarınız varsa çok yararlı bir seçenek.

RETURN: Shell'den veya bir komut dosyasından verilen sayı ile çıkmayı sağlar.

RPN: İşlem yapmanızı sağlayan bir emir. +, -, *, /'nün yanısıra, % (modulo), & (And), | (Or), ~ (Not) işlemleri yapılabilir.

Örnek: "RPN 3 7 * size" komutu, 21 cevabını verir. RUN: Yeni bir CLI açarak program çalıştırır. Ancak bu emirin çalışma garantisi fazla yok.

RXREC ve RXSEND: ARexx portu ile ilgili emirler. SEARCH: Verilen dosya ismini istenilen directory'lerde arar. SLEEP: Verilen saniye kadar veya Ctrl-C'ye basılana kadar bekler.

STACK: Stack CLI'ya verilen byte kadar Stack (Dinamik değişkenlerin ve rekürsif fonksiyonların kullanacağı ara hafıza by ERH) ekler.

STRINGS: (STRINGS dosya 7) Verilen bir dosyanın içindeki yazıları yazar. Örnek dosyada bulunan 7 harfi geçen tüm harf dizgelerini ekrana yazar.

SOURCE: AmigaDOS'taki execute emrinin bir benzeri. TAIL: Verilen dosyanın sondan belirtilen sayıda satırı. TYPE: Adı üstünde, CAT ile eş anlamlı. TOUCH: Verilen dosyanın saat ve tarihini güncelleştirmek için.

UNALIAS: Alias ile tanımlanmış olan kısaltmaları listeden çıkarır.

Evet bu kadar gibi gözüküyor. Bu güzelim programı (Hani ben de yazmadım ama) kullanabilmek için önce ona sahip olmak gerekir. Bazı Utility paketlerinde bulunmasına rağmen, mesela (Digitech 15), en sağlam olarak Fish disketlerinden (331 v4.01, 458 v4.02a) temin edilebilir. Özellikle tek drive kullanan arkadaşlar, bu programı bulsanız çok işinize yarar, bizden söylemesi.