top of page

Yapılandırılmış Komut Kullanımı-2

  • Yazarın fotoğrafı: Huseyin Şahan
    Huseyin Şahan
  • 8 Nis
  • 4 dakikada okunur

Bu blog yazımızda dosya karşılaştırmaları için test ifadelerini göreceğiz ardından bileşik testleri nasıl kullanacağımızı göreceğiz.


Dosya Karşılaştırmaları

Dosya karşılaştırmaları kabuk betiğinde kullanılan çok güçlü ve en çok kullanılan karşılaştırmalardır. Bu linux dosya dizilerini ve durumunu kontrol etmenizi sağlar. Aşağıda parametreler listelenmiştir.

Karşılaştırma

Açıklama

-d dosya

Dosyanın var olup bir dizin (katalog) olup olmadığını kontrol eder.

-e dosya

Dosyanın var olup olmadığını kontrol eder.

-f dosya

Dosyanın var olup bir dosya olup olmadığını kontrol eder.

-r dosya

Dosyanın var olup okunabilir olup olmadığını kontrol eder.

-s dosya

Dosyanın var olup boş olup olmadığını kontrol eder.

-w dosya

Dosyanın var olup yazılabilir olup olmadığını kontrol eder.

-x dosya

Dosyanın var olup çalıştırılabilir (yürütülebilir) olup olmadığını kontrol eder.

-O dosya

Dosyanın var olup, mevcut kullanıcıya ait olup olmadığını kontrol eder.

-G dosya

Dosyanın var olup, mevcut kullanıcının varsayılan grubuna ait olup olmadığını kontrol eder.

dosya1 -nt dosya2

dosya1'in dosya2'den daha yeni olup olmadığını kontrol eder.

dosya1 -ot dosya2

dosya1'in dosya2'den daha eski olup olmadığını kontrol eder.

Dizin Kontrolü


-d testi, belirtilen dizinin sistemde var olup olmadığını kontrol eder. Bu tür bir kontrol yapmak, bir dosyayı bir dizine yazmaya çalışmadan önce veya bir dizine geçmeden önce iyi bir uygulamadır. Aşağıda dizinin var olup olmadığını kontrol eden bir betik dosyası verilmiştir.

#! /bin/bash

dizin_atla=/home/testuser

if [ -d $dizin_atla ]
then
   echo "$dizin_atla dosyası mevcuttur..."
   cd $dizin_atla
   ls
else
   echo "$dizin_atla klasörü mevcut değil!"
fi

Burada dikkat etmeniz kısım köşeli parantez içine parametre ve dizin yazarken başta ve sonda birer boşluk olmalıdır.


Dizin ve Dosya Kontrolü


-e parametresini kullanarak ilk olarak dizinin mevcut olup olmadığını ardından bir dosyanın mevcut olup olmadığını kontrol edebiliriz.


#! /bin/bash

konum=$HOME
dosya_adi=ornek_dosya

if [ -e $konum ]
then
   echo "Tamam konum mevcut.."
   echo "Şimdi dosya kontrol ediliyor.."
   #
   if [ -e $konum/$dosya_adi ]
   then
       echo "Tamam dosya mevcut..."
       echo "Dosya içeriği güncelleniyor.."
       date >> $konum/$dosya_adi  # Dosya içine tarih yazdırın.
   #
   else
        echo "Dosya mevcut değil !"
        echo "Güncelleme Yapılamadı !"
   fi
   
#
else
   echo "$konum dosyası mevcut değil !"
   echo "Hiçbirşey güncellenmedi !"
fi
#

Bu betikte ilk olarak dizinin mevcut olup olmadığı kontrol edilmiş ardından bir dosyanın mevcut olup olmadığı kontrolü yapılmış ve dosyaya geçerli tarihi redirecting parametre ile >> yazılmıştır. Eğer dosya ve dizin mevcut değilse uyarı verecektir. Bu betiği istediğiniz gibi şekillendirip kullanabilirsiniz. Ancak ornek_dosya için yazma izni verdiğinizden emin olun.


Kesin Dosya Kontrolü


-e parametresi kesin olarak dosya kontrolü yapmaz yalnızca dosya veya dizinin mevcut olup olmadığını kontrol eder. Kesinlikle bir dosya olmasını isterseniz -f parametresini kullanın. Aşağıda bu durum için örnek verilmiştir.

#! /bin/bash

hedef=$HOME
#
echo
echo "Öğe kontrolü başlatılıyor.."
echo

if [ -e $hedef ]
then
   echo "Tamam hedef mevcut.."
   echo "Hedef dosya mı kontrolü yapılıyor.."
   #
   if [ -f $hedef ]
   then
       echo "Evet, hedef bir dosyadır.."
   else
       echo "Hayır, hedef bir dosya değil!"
   fi
   #
else
   echo "Hedef mevcut değil !"
fi

Bu komut ile hedefin kesinlikle bir dosya olup olmadığı kontrol edilmiştir. Unutmayın -e komutu yalnızca hedefin varlığını belirlerken -f komutu bu hedefin kesinlikle dosya mı olduğunu belirler.


Okuma Erişimini Kontrol Etme


Bir dosyadan veri okumadan önce o dosyanın okuma izni olup olmadığını kontrol etmek iyi bir uygulamadır. -r parametresi ile dosyanın okunabilir olup olmadığını kontrol edebilirsiniz. Aşağıdaki komut ile dosyanın var olup olmadığını kontrol ettikten sonra okuma izni kontrol edilmiş ve izin varsa tail ile içerik okunmuştur.

#! /bin/bash

hedef=$HOME/ornek_dosya

if [ -f $hedef ]
then
    echo "Dosya mevcuttur..."
    echo "Dosya okuma izni kontrol ediliyor..."
    #
    if [ -r $hedef ]
    then
        echo "Dosya okunabilir.."
        echo "Dosya içeriği görüntüleniyor.."
        tail $hedef
    else
       echo "Dosya okuma izni yok ve içerik görüntülenemez!"
    fi
    #
else
   echo "Dosya mevcut değil !"
fi

Bu komut ile dosyanın mevcut olup olmadığı ardından dosyanın okunabilirliği kontrol edilip buna göre işlem yapılmıştır.


Boş Dosya Kontrolü


Bir dosyanın boş olup olmadığını kontrol etmek için -s parametresini kullanmalısınız. Özellikel boş olan dosyaları kontrol edip silmek istediğinizde bu çok faydalıdır. Aşağıda bu durumlar için kullanabileceğiniz bir betik dosyası verilmiştir.

#! /bin/bash

hedef=$HOME/ornek_dosya

if [ -f $hedef ]
then
    echo "Dosya mevcuttur.."
    echo "Dosya içeriği boş mu kontrolü yapılıyor ..."
    #
    if [ -s $hedef ]
    then
       echo "Dosya içeriği mevcuttur..."
       echo "Dosya silinmeyecektir..."
    else
       echo "Dosya içeriği boş görünüyor.."
       echo "Dosya siliniyor"
       rm $hedef
    fi
    #
else
    echo "Dosya mevcut değildir !"
fi

Dosyaya Yazma İzni Kontrolü


-w parametresi ile dosyaya yazma izni kontrolünüz olup olmadığını kontrol edebilir ve bu duruma göre dosyaya yazabilirsiniz. Bu duruma uygun bir örnek verilmiştir.

#! /bin/bash

hedef=$HOME/ornek_dosya

echo 
echo "$hedef öğe kontrolü başlatılıyor.."
echo

if [ -f $hedef ]
then
    echo "Dosya mevcut görünüyor.."
    echo "Dosya yazma izni kontrol ediliyor.."
    #
    if [ -w $hedef ]
    then
        echo "Yazma izniniz mevcuttur..."
        echo "Geçerli saat yazdırılıyor.."
        date +%H:%M >> $hedef
    else
        echo "$hedef dosyasına yazma izniniz yok..."
        echo "Geçerli saat yazdırılamadı..."
    fi
    #
else
    echo "Belirtilen dosya bulunamadı..."
fi

Dosya Çalıştırılabilirlik Kontrolü


-x parametresi ile dosyanın çalıştırılabilir olup olmadığını kontrol edebilirsiniz. Bu her zaman gerekli olmasada birden fazla betik dosyası çalıştırırken işe yarayabilir.

#! /bin/bash

dizin=$HOME/scriptfiles
dosya=bashfile

echo 
echo "$dosya çalıştırılabilirlik kontrolü başlatılıyor..."
echo

if [ -x $dosya ]
then
    echo "Dosya çalıştırılabilir görünüyor..."
    ./$dosya
else
    echo "Dosya çalıştırılabilir değil !"
fi

Dosya Sahipliğini Kontrol Etme


-O parametresi, bir dosyanın sahibi olup olmadığını kontrol etmenizi sağlar.

#! /bin/bash


if [ -O /etc/passwd ]
then 
    echo "Siz, /etc/passwd dosyasının sahibisiniz.."
else
    echo "Siz /etc/passwd dosyasının sahibi değilsiniz !"
fi

Varsayılan Grup Üyeliği Kontrolü


-G parametresi ile dosyanın varsayılan grubu ile sizin bulunduğunuz grubu karşılaştırır.

#! /bin/bash


if [ -G $HOME/ornek_dosya ]
then 
    echo "Dosyanın varsayılan grubu ile aynı gruptasınız.."
else
    echo "Dosyanın varsayılan grubu ile aynı grupta değilsiniz!"
fi

Dosya Tarihini Kontrol Etme


-nt ve -ot parametreleri dosyanın tarihlerini karşılaştırır. Aşağıda örnek bir dosya verilmiştir.

#! /bin/bash

file1=dizinvedosyakontrol
file2=bashfile

if [ $file1 -nt $file2 ]
then
    echo "$file1 dosyası $file2 'den daha yenidir"
else
    echo "$file2 dosyası $file1 'den daha yenidir"
fi
#
if [ $file1 -ot $file2 ]
then
    echo "$file1 dosyası $file2 dosyasından daha eskidir"
fi

Gibi dosya tarihlerini karşılaştırabilirsiniz.


Koşul Birleştirme


if-then komutları komutları birleştirebilmenizi sağlar. Bunun için || ve && operatörlerini kullanabilirsiniz. && her iki koşul doğru ise çalışırken || koşullardan biri doğru ise çalışır.

#! /bin/bash

file=dizinvedosyakontrol

if [ -f $file ] && [ -w $file ]
then
    echo "Dosya var ve yazabilirim..."
else
   echo "Üzgünüm dosyaya yazamam !"
fi

gibi komutları birleştirebilirsiniz.



Betik dosyalarında dosya karşılaştırma için parametrelerin kullanımını detaylı olarak betik dosyaları olarak verdik. Bu dosyalar gerçekten işinize yarayacak şekilde yazılmıştır. Ardından bu komutları birleştirebilmeniz için koşul birleştirmeyi ele aldık.


Sonraki blog yazılarında görüşmek üzere...

Commentaires


bottom of page