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.