Örnek Kabuk Programı

Next: Sed ve Vi Up: Bash Kabuğu Previous: for-do döngüsü

# Örnek Kabuk Programı

Sistem görevlisinin en çok kullandığım komutlardan birisi `ps -aux grep -i xxx` komutudur. Bu satır yardımıyla çalışan xxx isimli program hakkında daha detaylı bilgi elde edilebilir. `ps` komutu detaylı bir süreç listesini ekrana verirken çıktı doğrudan grep komutuna yönlendirilir ve sadece istediğimiz bilgi ekranda görünür. Fakat her zaman aynı uzun satırı tekrar tekrar yazmaktansa bu satırı bir dosyaya gönderip, dosya adını komut satırından çalıştırmak zamandan tasarruf sağlayacaktır. Biz de öyle yapalım ve aşağıdaki satırları ``goster'' isimli dosyaya yazalım.

    #!/bin/bash
    if [ $# = 1 ]
      then
      ps -ax | grep -i $1
    else
      ps -ax
    fi

Ardından dosyayı PATH değişkeninin işaret ettiği dizinlerden `/usr/local/bin` altına yerleştirip çalıştırılabilir olması için `chmod +x /usr/local/bin/goster` komutunu uygulayın. Kendi yazdığınız dosyaları `/usr/local` veya `2#2/bin` dizini altına kopyalamanız bunların derli toplu olarak tek bir dizinde her an erişilebilir şekilde durmaları açısından önem taşır.

`grep` komutu, bir dosyadaki veya standart girişteki satırlar içinden belirli bir kelime, harf veya harf grubunu bulmaya yarar. Aşağıdaki birkaç örnek `grep`'i özetlemeye yeter.

    $ grep while sort.c
    sort.c dosyasinda while kelimesini iceren tum satirlari ekrana yazar.
    $ w | grep demir
    sistemde demir isimli kullanici var mi?
    $ ls -al | grep "^d"

Son örnek, `ls -al` çıktısında satır başında ``d'' varsa ekrana getirir. Sadece dizin isimlerinin başında ``d'' harfi bulunur. Şapka isareti, satır başlangıcını gösterir.

Dosyaya biraz daha yakından bakalım. İlk satır, bu dosyanın `/bin/bash` programı tarafından çalıştırılacağını gösterir. İkinci satır yardımıyla komut satırı üzerinde kaç tane opsiyon olduğu bulunur. $# çevresel değişkeni her biri TAB veya boşluk karakteri ile ayrılmış komut satırı opsiyonları sayısını verir. Aşağıdaki komutta toplam 3 opsiyon vardır.

    $ ls --8bit  -F -b

`$#` komutuna benzer şekilde $1, $2, $3 ... değişkenleri de opsiyonları verir. Yukarıdaki komutta $1, $2, $2 değişkenleri sırasıyla

    --8bit
    -F
    -b

değerlerini alırlar. Komut satırından çalıştırılan komut ise $0 değişkenine atılır. Yukarıdaki örnekte $0 değişkeni `ls` değerini tutacaktır.

`goster` dosyasına tek opsiyon yollayacağız. Bu opsiyon da hakkında detaylı bilgi alacağımız süreç olacaktır. Dosya içinde $1 değişkenini `ps` komutuna yerleştirmek için :

    ps -ax | grep -i $1;

yazılır. Bundan sonra komut satırında, örneğin:

    $ goster bash

girilirse $1 değişkeni `bash` e eşit olacak ve bu da `ps -ax grep -i bash` eşdeğer komutunu çalıştıracaktır. Komut olarak sadece `goster` girilirse $# değişkeni 0'a eşit olacağından dosyada yeralan ve hiç bir filtreleme yapmayan `ps -ax` komutu çalışır.

Linux'u yüklerken HOWTO dokümanlarını da eklemeyi ihmal etmediniz, değil mi ? Aşağıdaki kısa program, bu dosyalara en hızlı şekilde ulaşmanıza yarıyor. Tüm HOWTO'lar kurulum aşamasında `/usr/doc/faq/howto` dizini altına kopyalanır ve sıkıştırılır.

Bu programı herhangi bir isimle kaydedin. Ardından komut satırından programın ismi ile birlikte ekranda görüntülemek istediğiniz HOWTO dokümanının ismini yazın (örneğin PPP). Bir parametre girilmez ise `/usr/doc/faq/howto` dizinindeki dosyalar ekrana gelir.

    #!/bin/bash
    if [ "$1" = "" ]; then
        ls /usr/doc/faq/howto | less
    else
        gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less
    fi

Next: Sed ve Vi Up: Bash Kabuğu Previous: for-do döngüsü