9 – Bash Script ile Dosyalar Üzerinde Çalışma

Bash script yazarken, dosyalar üzerinde çeşitli işlemler yapmak oldukça yaygın bir gereksinimdir. Bu işlemler arasında dosya oluşturma, dosyaların varlığını kontrol etme, dosya okuma ve yazma gibi görevler yer alır. Bu makalede, Bash script ile dosya işlemlerini nasıl gerçekleştirebileceğinizi ve dosya kontrolleriyle nasıl çalışabileceğinizi ele alacağız.
Dosya ve Dizin Varlığını Kontrol Etme
Bash script yazarken, belirli bir dosyanın veya dizinin var olup olmadığını kontrol etmek önemlidir. Bu tür kontroller, özellikle dosya oluşturulması, yedekleme yapılması ya da bir dosya üzerinde değişiklik yapılmadan önce kullanılır.
-f
, -d
, -e
Parametreleri ile Kontroller
-f
: Belirtilen yolun geçerli bir dosya olup olmadığını kontrol eder.-d
: Belirtilen yolun geçerli bir dizin olup olmadığını kontrol eder.-e
: Dosya ya da dizinin var olup olmadığını kontrol eder.
dosya="ornek.txt"
# Dosyanın var olup olmadığını kontrol etme
if [ -f "$dosya" ]; then
echo "$dosya mevcut."
else
echo "$dosya bulunamadı."
fi
# Dizinin varlığını kontrol etme
dizin="ornek_klasor"
if [ -d "$dizin" ]; then
echo "$dizin dizini mevcut."
else
echo "$dizin dizini bulunamadı."
fi
Bu örnek, belirli bir dosyanın ve dizinin varlığını kontrol eder ve duruma göre bir mesaj yazdırır.
Dosya Okuma ve Yazma İşlemleri
Dosyalar üzerinde okuma ve yazma işlemleri yaparken, Bash’teki cat
, echo
, >
, >>
gibi komutlar kullanılır.
Dosyaya Yazma (>
ve >>
)
Dosyaya veri yazmak için >
ve >>
operatörleri kullanılır:
>
: Dosyayı baştan yazar. Eğer dosya daha önceden mevcutsa, var olan içeriği siler ve yerine yeni içeriği yazar.>>
: Dosyanın sonuna ekleme yapar. Mevcut içerik korunur.
# Yeni bir dosya oluştur ve içerik yaz
echo "Bu bir deneme dosyasıdır." > deneme.txt
# Dosyanın sonuna ekleme yap
echo "Dosyanın sonuna eklenen içerik." >> deneme.txt
Bu kodlar, deneme.txt
adında bir dosya oluşturur ve dosyanın içine belirtilen verileri yazar.
Dosya Okuma (cat
)
Dosyanın içeriğini okumak için cat
komutu kullanılır.
# Dosyanın içeriğini oku ve ekrana yazdır
cat deneme.txt
Bu örnek, deneme.txt
dosyasının içeriğini ekrana yazdırır.
Dosya İçeriğinde Arama (grep
Komutu)
Bash scriptlerde dosya içeriğinde belirli bir metni aramak için grep
komutu kullanılır. Bu komut, dosya içinde belirli bir ifadeyi arar ve bulduğu satırları ekrana yazdırır.
# Dosya içeriğinde "deneme" kelimesini ara
grep "deneme" deneme.txt
Bu komut, deneme.txt
dosyasında deneme
kelimesini içeren satırları bulur ve ekrana yazdırır.
grep
ile Gelişmiş Kullanım
- Tüm dosyada bir kelimeyi aramak:
grep "kelime" *.txt
Bu komut, geçerli dizindeki tüm .txt
dosyalarında “kelime” ifadesini arar.
Büyük/küçük harf duyarsız arama:
grep -i "kelime" dosya.txt
-i
parametresi, büyük/küçük harf duyarlılığını kaldırarak arama yapar.
Dosya ve Dizin İşlemlerini Kombine Etme
Çoğu zaman, bir script yazarken dosya ve dizin işlemlerini birlikte kullanmanız gerekebilir. Örneğin, belirli bir dosya varsa yedekleme yapmak veya belirli bir dizin varsa yeni bir dosya oluşturmak gibi işlemler yapabilirsiniz.
Örnek: Yedekleme Script’i
Belirli bir dosyanın yedeğini almak için şu şekilde bir script oluşturabilirsiniz:
dosya="ornek.txt"
yedek_dizin="yedekler"
# Yedek dizininin var olup olmadığını kontrol et, yoksa oluştur
if [ ! -d "$yedek_dizin" ]; then
mkdir "$yedek_dizin"
echo "$yedek_dizin dizini oluşturuldu."
fi
# Dosyanın varlığını kontrol et ve yedeğini al
if [ -f "$dosya" ]; then
cp "$dosya" "$yedek_dizin/${dosya}_$(date +%F).bak"
echo "$dosya dosyası yedeklendi."
else
echo "$dosya dosyası bulunamadı."
fi
Bu script, ornek.txt
dosyasının bir yedeğini tarih bilgisiyle birlikte yedekler
dizinine kaydeder. Eğer yedekler
dizini daha önce mevcut değilse, script bu dizini otomatik olarak oluşturur.
Dosya İzinleri ve Kontroller
Dosya işlemlerinde izinler de önemli bir konudur. Bir dosyayı okuyabilmek veya üzerinde değişiklik yapabilmek için gerekli izinlere sahip olup olmadığınızı kontrol edebilirsiniz.
- Dosyanın okunabilir olup olmadığını kontrol etme (
-r
):
if [ -r "$dosya" ]; then
echo "$dosya dosyası okunabilir."
else
echo "$dosya dosyasını okumaya izniniz yok."
fi
Dosyanın yazılabilir olup olmadığını kontrol etme (-w
):
if [ -w "$dosya" ]; then
echo "$dosya dosyası yazılabilir."
else
echo "$dosya dosyasını yazmaya izniniz yok."
fi
Bu izin kontrolleri, bir dosya üzerinde işlem yapmadan önce izinlerin kontrol edilmesine yardımcı olur ve hata mesajlarını önler.
Bash scriptlerinde dosya işlemleri oldukça sık karşılaşılan bir ihtiyaçtır. Dosyaların ve dizinlerin varlığını kontrol etmek (-f
, -d
, -e
), dosya içeriğini okumak (cat
), dosyalara veri yazmak (>
, >>
) ve dosya içeriğinde arama yapmak (grep
) gibi işlemler günlük script yazma ihtiyaçlarında büyük önem taşır. Dosyalar üzerinde çalışırken bu kontroller ve işlemler, scriptlerinizin güvenli ve esnek olmasını sağlar.
Bu makalede, Bash scriptlerde dosya işlemleri ve kontrollerini nasıl gerçekleştirebileceğinizi gördük. Dosya işlemleri ve kontrolleri sayesinde daha dinamik ve kullanıcı etkileşimli scriptler yazabilir ve dosyalarla kolayca çalışabilirsiniz. Bu konuları kullanarak, kendi otomasyon scriptlerinizi yazabilir ve dosyalar üzerinde etkili bir şekilde çalışabilirsiniz.