İçindekilerGirişİndex
YukarıİlkÖnceki YokSonrakiSon
Geriİleri
Yazdır
Cemil Sezer
jemilsezer@yahoo.com

Bir Klasörde Arama Yapan Bash Kabuk Programı Örneği

Çok basit olmasa da kabuk programlama temellerini içeren, benim yazıp hala kullandığım bir kabuk programı

#!/bin/bash

if [ "$#" -eq 1 ]; then
        for i in *; do
                if [ -f $i ]; then
                        grep "$1" $i >/dev/null 2>&1
                        if [ "$?" -eq 0 ]; then
                                echo $i
                                echo "---------------"
                                grep "$1" $i
                        fi
                fi
        done
else
        echo "Bir Parametre Gir"
fi

Bu kabuk programı kendisine parametre olarak vereceğimiz stringi, programı çalıştırdığımız klasördeki tüm dosyalarda arar. Eğer dosyanın içeriğinde verdiğimiz parametre var ise dosya adı ile ilgili satırları listeler.

Ilk koşul önermesindeki $#, komuta komut satırından gönderilen parametrelerin sayisini verir. Yani kabuk programımıza yalnız ve yalnız bir parametre gonderilmezse bize “Bir Parametre Gir” mesajını verecek.

For i in *; do

önermesi komutun çalıştırıldığı klasördeki her dosya için çalışacak bir döngü başlatır, bu döngü içinde $i, dosyaları temsil eder.

Grep komutu ile dosyanın içeriğinde parametre olarak gönderilen değerin olup olmadığı kontrol edilir. Burda komutun çıktısını /dev/null'a yönlendirerek komutun ekrana herhangi bir çıktı göndermemesini sağlamış oluyoruz. Aynı şekilde 2>&1 önermesi ile de komutun doğurabileceği hataları da da ekrana göndermemesini sağlıyoruz. Burda 2 hata durumunu simgeler, &1 ise 1'in simgelediği standart çıktının gönderileceği çıktı aygıtını (bu durumda /dev/null) simgeler.

En son çalıştırdığımız grep komutu başarılı ise bize 0 kodunu döndürür. Eğer başarılı ise ekrana dosya adını ve dosya içeriğinde benzer olarak eşleşen değerin bulunduğu satırları yazdırıyoruz.

İçindekilerGirişİndex
YukarıİlkÖnceki YokSonrakiSon
Geriİleri
Yazdır