Bash ile Etkileşimli Toplu Dosya Taşıma Fonksiyonu
Bu makale, Bash kabuk betiği kullanılarak yazılmış, kullanıcıdan alınan hedef dizine seçilen dosyaları etkileşimli biçimde taşıyan bir fonksiyonun teknik analizini sunar. Betik, dizin varlığını kontrol eder, gerekirse dizin oluşturur ve fzf aracı ile çoklu dosya seçimini destekler.
Kullanılan Araçlar ve Bileşenler
Bu betik aşağıdaki araç ve özelliklere dayanır:
- Bash: Betiğin çalıştığı kabuk ortamı
- fzf: Terminal tabanlı, etkileşimli dosya seçici
- xargs: Standart girdiden alınan verileri komut argümanlarına dönüştürmek için
- mv: Dosya ve dizinleri taşımak için
- mkdir: Yeni dizin oluşturmak için
Betiğin Yapısı
Shebang Tanımı
#!/usr/bin/env bash
Bu satır, betiğin hangi yorumlayıcı ile çalıştırılacağını belirtir. env kullanımı, sistemdeki Bash yolunu dinamik olarak bulur ve taşınabilirliği artırır.
Fonksiyon Tanımı
batch_move() {
batch_move adlı bir fonksiyon tanımlanmıştır. Bu yapı, kodun yeniden kullanılabilirliğini sağlar ve mantıksal bir bütünlük oluşturur.
Kullanıcıdan Girdi Alma
echo -e "Please enter foldername:\n"
read foldername
Kullanıcıdan hedef dizin adı alınır ve foldername değişkenine atanır. echo -e kullanımı, satır sonu karakterlerinin işlenmesini sağlar.
Dizin Varlık Kontrolü (Var Olan Dizin)
if [[ -d "$foldername" ]]; then
fzf --multi | xargs -I {} mv {} "$foldername"
fi
-dtesti ile dizinin varlığı kontrol edilir.Dizin mevcutsa:
fzf --multiile kullanıcıya çoklu dosya seçimi sunulur.- Seçilen her dosya
xargsaracılığıylamvkomutuna argüman olarak geçirilir. - Dosyalar hedef dizine taşınır.
Dizin Varlık Kontrolü (Olmayan Dizin)
if [[ ! -d "$foldername" ]]; then
echo "Folder Not Exists! Creating: $foldername"
mkdir "$foldername"
fzf --multi | xargs -I {} mv {} "$foldername"
fi
Dizin mevcut değilse:
- Kullanıcıya bilgilendirme mesajı gösterilir.
mkdirile dizin oluşturulur.- Aynı dosya seçme ve taşıma işlemi tekrar uygulanır.
Fonksiyonun Çağrılması
batch_move
Fonksiyon tanımlandıktan sonra doğrudan çağrılarak betiğin çalışması başlatılır.
Çalışma Akışı Özeti
- Kullanıcıdan hedef dizin adı alınır.
- Dizin var mı kontrol edilir.
- Yoksa oluşturulur.
- Kullanıcı
fzfile dosyaları seçer. - Seçilen dosyalar hedef dizine taşınır.
Sonuç
Bu betik, terminal ortamında dosya yönetimini hızlandırmak için etkileşimli ve kullanıcı dostu bir yaklaşım sunar. fzf entegrasyonu sayesinde manuel dosya isimleriyle uğraşmadan, görsel bir seçim deneyimi sağlar. Bash fonksiyon yapısı ise betiğin modülerliğini ve bakımını kolaylaştırır.