Adres Defteri Betiği
Aşağıdaki bash betiğini kullanarak basit bir adres defteri oluşturabilirsiniz:
Kod: Tümünü seç
#!/bin/bash
# Adres defteri dosyası
ADDRESS_BOOK="address_book.dat"
# Kullanıcıdan bilgi al ve yeni giriş ekle
function add_entry {
echo "Yeni bir giriş eklemek için bilgileri girin:"
read -p "İsim: " name
read -p "Telefon Numarası: " phone
read -p "E-posta: " email
# Bilgileri dosyaya ekle
echo "$name, $phone, $email" >> "$ADDRESS_BOOK"
echo "Giriş başarıyla eklendi."
}
# Adres defterini oku ve ekrana yazdır
function display_entries {
echo "Adres Defteri:"
if [ -f "$ADDRESS_BOOK" ]; then
while IFS=, read -r name phone email; do
echo "İsim: $name, Telefon: $phone, E-posta: $email"
done < "$ADDRESS_BOOK"
else
echo "Adres defteri bulunamadı."
fi
}
# Girişi sil
function delete_entry {
read -p "Silmek istediğiniz ismi girin: " name_to_delete
if [ -f "$ADDRESS_BOOK" ]; then
# Geçici dosya oluştur
temp_file=$(mktemp)
# Dosyayı oku ve silmek istemediğimiz girişleri geçici dosyaya yaz
while IFS=, read -r name phone email; do
if [ "$name" != "$name_to_delete" ]; then
echo "$name, $phone, $email" >> "$temp_file"
fi
done < "$ADDRESS_BOOK"
# Geçici dosyayı orijinal dosya ile değiştir
mv "$temp_file" "$ADDRESS_BOOK"
echo "Giriş başarıyla silindi."
else
echo "Adres defteri bulunamadı."
fi
}
# Ana menü
while true; do
echo "Adres Defteri Uygulaması"
echo "1. Yeni Giriş Ekle"
echo "2. Girişleri Göster"
echo "3. Giriş Sil"
echo "4. Çıkış"
read -p "Seçiminizi yapın (1/2/3/4): " choice
case $choice in
1) add_entry ;;
2) display_entries ;;
3) delete_entry ;;
4) echo "Çıkılıyor..."; exit 0 ;;
*) echo "Geçersiz seçim, lütfen tekrar deneyin." ;;
esac
done
Yukarıdaki kodu bir dosyaya yapıştırın, örneğin address_book.sh
Betiği çalıştırılabilir hale getirin:
Kod: Tümünü seç
chmod +x address_book.sh
Kod: Tümünü seç
./address_book.sh
Kod: Tümünü seç
delete_entry
Geçici bir dosya oluşturur ve orijinal dosyayı okur. Silinmek istenen isimle eşleşmeyen girişleri geçici dosyaya yazar.
Geçici dosya, orijinal dosya ile değiştirilir, böylece silinmiş olur.
Ana menüye "Giriş Sil" seçeneği eklenmiştir.
Adres defteri uygulaması, kullanıcıların giriş eklemesine, görüntülemesine ve silmesine olanak tanır.
Kodlanan adres defteri betiği aşağıdaki işlevleri yerine getiriyor:
Veri Girişi:
Kullanıcı, isim, telefon numarası ve e-posta adresi gibi bilgileri girerek yeni bir giriş ekleyebilir.
Veri Kaydetme:
Girilen bilgiler, address_book.dat adlı bir dosyaya kaydedilir. Her yeni giriş, dosyanın sonuna eklenir.
Veri Görüntüleme:
Kullanıcı, mevcut adres defterindeki tüm girişleri görüntüleyebilir. Bu, dosyadaki tüm kayıtları okuyarak terminal ekranına yazdırır.
Veri Silme:
Kullanıcı, belirli bir isme sahip girişi silme seçeneğine sahiptir. Silmek istediği ismi girdikten sonra, bu isimle eşleşen giriş dosyadan kaldırılır.
Bu işlevler, basit bir adres defteri uygulaması oluşturmak için yeterlidir. Kullanıcılar, adres defterine yeni girişler ekleyebilir,
mevcut girişleri görüntüleyebilir ve istenmeyen girişleri silebilirler.
İşlevlerin Açıklamaları
ADDRESS_BOOK Değişkeni:
ADDRESS_BOOK="address_book.dat":
Adres defterinin kaydedileceği dosyanın adını tanımlar. Bu dosya, kullanıcı girişlerini saklamak için kullanılır.
add_entry Fonksiyonu:
Kullanıcıdan yeni bir giriş eklemek için isim, telefon numarası ve e-posta adresi alır.
read -p komutları ile kullanıcıdan bilgi alınır.
Alınan bilgiler, address_book.dat dosyasına eklenir. >> operatörü, dosyanın sonuna ekleme yapar.
Kullanıcıya girişin başarıyla eklendiği mesajı gösterilir.
display_entries Fonksiyonu:
Adres defterindeki mevcut girişleri görüntülemek için kullanılır.
Eğer address_book.dat dosyası mevcutsa, dosya okunur ve her bir giriş ekrana yazdırılır.
IFS=, ile dosyadaki verilerin virgülle ayrıldığı belirtilir. Bu sayede her bir girişin isim, telefon ve e-posta bilgileri ayrı ayrı
okunur.
Eğer dosya yoksa, kullanıcıya "Adres defteri bulunamadı." mesajı gösterilir.
delete_entry Fonksiyonu :
Kullanıcıdan silmek istediği ismi alır.
Eğer address_book.dat dosyası mevcutsa, geçici bir dosya oluşturulur (temp_file).
Orijinal dosya okunur ve silinmek istenen isimle eşleşmeyen girişler geçici dosyaya yazılır.
Geçici dosya, orijinal dosya ile değiştirilir (mv komutu ile). Bu işlem, silinmiş girişin dosyadan kaldırılmasını sağlar.
Kullanıcıya "Giriş başarıyla silindi." mesajı gösterilir.
Eğer dosya yoksa, kullanıcıya "Adres defteri bulunamadı." mesajı gösterilir.
Ana Menü:
while true; do ... done: Sonsuz bir döngü oluşturur, böylece kullanıcı uygulamadan çıkana kadar menü sürekli olarak gösterilir.
Kullanıcıya adres defteri uygulaması için seçenekler sunulur:
1. Yeni Giriş Ekle: add_entry fonksiyonunu çağırır.
2. Girişleri Göster: display_entries fonksiyonunu çağırır.
3. Giriş Sil: delete_entry fonksiyonunu çağırır.
4. Çıkış: Uygulamadan çıkmak için döngüyü sonlandırır (exit 0).
Kullanıcının yaptığı seçim read -p ile alınır ve case yapısı ile hangi işlemin yapılacağı belirlenir.
Geçersiz bir seçim yapılırsa, kullanıcıya "Geçersiz seçim, lütfen tekrar deneyin." mesajı gösterilir.
Peki .dat dosyası nereye kayıt edilir?
.dat dosyası, betiği çalıştırdığınız dizinde kaydedilir. Yani, address_book.sh betiğini hangi dizinde çalıştırıyorsanız, address_book.dat dosyası da o dizinde oluşturulacaktır.
Örnek
Betiği Çalıştırma:
Örneğin, terminalde /home/kullanici/adres_defteri dizinindeyseniz ve betiği bu dizinde çalıştırıyorsanız:
Kod: Tümünü seç
./address_book.sh
Betik çalıştığında, yeni girişler eklediğinizde address_book.dat dosyası bu dizinde oluşturulacak ve veriler bu dosyaya kaydedilecektir.
Dosyanın Bulunduğu Yeri Kontrol Etme
Eğer dosyanın nerede olduğunu kontrol etmek isterseniz, terminalde aşağıdaki komutu kullanarak mevcut dizini görebilirsiniz:
Kod: Tümünü seç
pwd
kontrol etmek için:
Kod: Tümünü seç
ls
oluşturulmuş demektir.
Dosyanın Farklı Bir Yerde Oluşturulması
Eğer .dat dosyasını belirli bir dizinde oluşturmak isterseniz, ADDRESS_BOOK değişkenini güncelleyerek dosyanın tam yolunu
belirtebilirsiniz.
Örneğin:
Kod: Tümünü seç
ADDRESS_BOOK="/home/kullanici/adres_defteri/address_book.dat"