gokayburuc.dev

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:


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

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

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

  1. Kullanıcıdan hedef dizin adı alınır.
  2. Dizin var mı kontrol edilir.
  3. Yoksa oluşturulur.
  4. Kullanıcı fzf ile dosyaları seçer.
  5. 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.

#bash #linux