Zenity İle Dosya Ve Dizin İşlemlerini Otomatikleştirme

Cevapla
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 751
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 186 kez
Teşekkür edildi: 610 kez
İletişim:

Zenity İle Dosya Ve Dizin İşlemlerini Otomatikleştirme

Mesaj gönderen TRWE_2012 »

zenity_klasor_dosya_islemleri.sh

KOD İÇERİĞİ :

Kod: Tümünü seç

#!/bin/bash

# Ana işlem türünü seçmek için Zenity kullan
islem=$(zenity --list --title="Klasör ve Dosya İşlemleri" --column="İşlem" \
    "Kopyala (Klasör, alt klasör ve dosyalar)" \
    "Taşı (Klasör, alt klasör ve dosyalar)" \
    "Kopyala (Sadece dosyalar)" \
    "Taşı (Sadece dosyalar)")

# Kullanıcıdan kaynak klasörünü seçmesini iste
kaynak=$(zenity --file-selection --directory --title="Kaynak Klasörü Seçin")

# Kullanıcıdan hedef klasörünü seçmesini iste
hedef=$(zenity --file-selection --directory --title="Hedef Klasörü Seçin")

# Seçimlerin kontrolü
if [ -z "$islem" ] || [ -z "$kaynak" ] || [ -z "$hedef" ]; then
    zenity --error --text="Lütfen tüm alanları doldurun."
    exit 1
fi

# Kritik dizin ve dosyaların listesi
kritik_dizinler=("/etc" "/bin" "/sbin" "/usr" "/lib" "/boot" "/var" "/dev" "/proc" "/sys")
kritik_dosyalar=("/etc/passwd" "/etc/shadow" "/etc/fstab" "/etc/hosts" "/boot/grub/grub.cfg")

# Kaynak dizinin kritik olup olmadığını kontrol et
for dizin in "${kritik_dizinler[@]}"; do
    if [[ "$kaynak" == "$dizin"/* ]]; then
        zenity --error --text="Bu dizine erişiminiz yok."
        exit 1
    fi
done

# Kaynak dosyanın kritik olup olmadığını kontrol et
for dosya in "${kritik_dosyalar[@]}"; do
    if [[ "$kaynak" == "$dosya" ]]; then
        zenity --error --text="Bu dosyaya erişiminiz yok."
        exit 1
    fi
done

# İşlem türüne göre kopyalama veya taşıma işlemi gerçekleştir
case "$islem" in
    "Kopyala (Klasör, alt klasör ve dosyalar)")
        cp -r "$kaynak" "$hedef/"
        zenity --info --text="Klasör ve içindeki tüm dosyalar başarıyla kopyalandı."
        ;;
    "Taşı (Klasör, alt klasör ve dosyalar)")
        mv "$kaynak" "$hedef/"
        zenity --info --text="Klasör ve içindeki tüm dosyalar başarıyla taşındı."
        ;;
    "Kopyala (Sadece dosyalar)")
        dosyalar=$(zenity --file-selection --multiple --title="Kaynak Dosyaları Seçin" --filename="$kaynak/")
        if [ -z "$dosyalar" ]; then
            zenity --error --text="Lütfen dosyaları seçin."
            exit 1
        fi
        IFS='|' read -r -a dosya_array <<< "$dosyalar"
        for dosya in "${dosya_array[@]}"; do
            cp "$dosya" "$hedef"
        done
        zenity --info --text="Dosyalar başarıyla kopyalandı."
        ;;
    "Taşı (Sadece dosyalar)")
        dosyalar=$(zenity --file-selection --multiple --title="Kaynak Dosyaları Seçin" --filename="$kaynak/")
        if [ -z "$dosyalar" ]; then
            zenity --error --text="Lütfen dosyaları seçin."
            exit 1
        fi
        IFS='|' read -r -a dosya_array <<< "$dosyalar"
        for dosya in "${dosya_array[@]}"; do
            mv "$dosya" "$hedef"
        done
        zenity --info --text="Dosyalar başarıyla taşındı."
        ;;
    *)
        zenity --error --text="Geçersiz seçim."
        ;;
esac
BETİK AÇIKLAMASI :

1. Kritik Dizin ve Dosyaların Kontrolü:

Betik, kullanıcıdan alınan kaynak dizin veya dosyanın kritik dizinler veya dosyalar listesinde olup olmadığını kontrol eder. Eğer kritik bir dizin veya dosya seçilmişse, kullanıcıya bir hata mesajı gösterilir ve işlem durdurulur.

2. İşlem Türüne Göre Kopyalama veya Taşıma:

• Kullanıcı, işlem türünü seçtikten sonra, betik seçilen işlem türüne göre kopyalama veya taşıma işlemini gerçekleştirir.
Kopyala (Klasör, alt klasör ve dosyalar): Seçilen kaynak dizin ve içindeki tüm dosyalar ve alt dizinler hedef dizine kopyalanır.
Taşı (Klasör, alt klasör ve dosyalar): Seçilen kaynak dizin ve içindeki tüm dosyalar ve alt dizinler hedef dizine taşınır.
Kopyala (Sadece dosyalar): Kullanıcıdan birden fazla dosya seçmesi istenir ve bu dosyalar hedef dizine kopyalanır.
Taşı (Sadece dosyalar): Kullanıcıdan birden fazla dosya seçmesi istenir ve bu dosyalar hedef dizine taşınır.

3.Kullanıcı Geri Bildirimi:

Her işlem tamamlandığında, kullanıcıya bir bilgi penceresi gösterilir. Bu, işlemin başarılı bir şekilde tamamlandığını belirtir.

NOT :

GNU/Linux sisteminde kritik öneme sahip dizinler ve dosyalar, sistemin düzgün çalışması için gereklidir ve bu dosyaların yanlışlıkla silinmesi veya taşınması, sistemin çökmesine veya işlevselliğinin kaybolmasına neden olabilir. Aşağıda, genellikle kritik kabul edilen bazı dizinler ve dosyalar listelenmiştir:

Kritik Dizinler

1. /etc: Sistem yapılandırma dosyalarının bulunduğu dizin.
2. /bin: Temel kullanıcı komutlarının bulunduğu dizin.
3. /sbin: Sistem yönetim komutlarının bulunduğu dizin.
4. /usr: Kullanıcı programları ve yardımcı dosyaların bulunduğu dizin.
5. /lib: Paylaşılan kütüphanelerin bulunduğu dizin.
6. /boot: Sistem önyükleme dosyalarının bulunduğu dizin.
7. /var: Değişken verilerin (log dosyaları, spool dosyaları vb.) bulunduğu dizin.
8. /dev: Cihaz dosyalarının bulunduğu dizin.
9. /proc: Çalışan süreçler ve sistem bilgileri hakkında sanal dosyaların bulunduğu dizin.
10. /sys: Çekirdek ve sistem bilgileri hakkında sanal dosyaların bulunduğu dizin.

Kritik Dosyalar

• /etc/passwd: Kullanıcı hesap bilgilerini içeren dosya.
• /etc/shadow: Kullanıcı parolalarının saklandığı dosya.
• /etc/fstab: Dosya sistemlerinin otomatik olarak bağlanma bilgilerini içeren dosya.
• /etc/hosts: Yerel ağda isim çözümlemesi için kullanılan dosya.
• /boot/grub/grub.cfg: GRUB önyükleyici yapılandırma dosyası.

Yukarıdaki betik kodlamasında , belirtilen kritik dizin ve dosyaların kopyalanmasını veya taşınması, koder tarafından engellenmiştir.

Kullanım Adımları

1. Betiği Oluşturma:

• Yukarıdaki kodu bir dosyaya yapıştırın, örneğin zenity_klasor_dosya_islemleri.sh adında bir dosya oluşturabilirsiniz.

2.Çalıştırma İzni Verme:

• Terminalde, betiğin bulunduğu dizine gidin ve aşağıdaki komutu çalıştırarak dosyaya çalıştırma izni verin:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Kod: Tümünü seç

chmod +x zenity_klasor_dosya_islemleri.sh
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3.Betiği Çalıştırma:

• Betiği çalıştırmak için terminalde aşağıdaki komutu kullanın:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Kod: Tümünü seç

./zenity_klasor_dosya_islemleri.sh
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4.İşlem Seçimi:

• Betik çalıştığında, bir pencere açılacak ve size dört işlem seçeneği sunulacaktır:

◇ Kopyala (Klasör, alt klasör ve dosyalar)
◇ Taşı (Klasör, alt klasör ve dosyalar)
◇ Kopyala (Sadece dosyalar)
◇ Taşı (Sadece dosyalar)

5. Kaynak ve Hedef Seçimi:

• Seçtiğiniz işleme göre, kaynak dizini ve hedef dizini seçmeniz istenecek. Klasör veya dosyaları seçtikten sonra işlemi tamamlayabilirsiniz.

Önemli Notlar :

• Kritik Dizin ve Dosyalar:

Betik, kritik dizin ve dosyaların yanlışlıkla taşınmasını veya kopyalanmasını önlemek için tasarlanmıştır. Bu nedenle, bu dizinlerde işlem yapmaya çalıştığınızda hata mesajı alacaksınız.

• İzinler:

Betiği çalıştırmadan önce, gerekli izinlerin ayarlandığından emin olun. Eğer kullanıcı izinleriyle ilgili sorun yaşıyorsanız, sudo kullanarak betiği çalıştırmayı deneyebilirsiniz.

• Geliştirme:

Betiği ihtiyaçlarınıza göre daha da geliştirebilir, daha fazla kontrol ekleyebilir veya kullanıcı arayüzünü iyileştirebilirsiniz.

Bu şekilde, kritik dosya ve dizinlerin korunmasını sağlayarak, kullanıcıların sistemin işleyişine zarar vermesini engellenmiştir.

Güle Güle Kullanın

EKRAN GÖRÜNTÜLERİ (Sistem : GNU/Linux Mint 21.1 x64)

Betiği çalıştırılması :

Resim

İşlem -1 : Dosyaları , belirtilen dizine "DOSYA TAŞIMA"... :

Resim
Resim
Resim
notçuk : birden fazla dosya seçmek için klavyenizden CTRL (Q-Klavye türünde sol alt kısımda bulunan) tuşuna basılı vaziyete, fare'nizin sol tuşuna bir kez tıklayarak dosyaları tek tek seçili hale getirin....
Resim
Resim

İşlem -2 : Bir dizini (içi dolu vaziyette) , belirtilen dizine "DİZİN TAŞIMA"... :

"deneme klasörü" (içi dolu) >> linux_mint (içi boş) taşınması

Resim
Resim
Resim
Resim

FİNAL SONUÇ :

Resim

Güle güle kullanın ... (İhtiyaç'tan hasıl olmuştur,sabahtan beridir uğraşılmaktaydı ve en sonunda Allah'ın izni ile oldu...!!!)
Dosya ekleri
zenity_klasor_dosya_islemleri.sh.7z
TRWE_2012 tarafından kodlanmıştır.Windows Gezginin Sağ Menü Girdileri, taklit edilmiştir.
Aralık 2025
(1.02 KiB) 3 kere indirildi
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim

Etiketler:
Cevapla

“Bash Shell Betiklerimiz” sayfasına dön