Yapılandırılmış Komut Kullanımı-2
- 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