Bash Betiklerinde basename Komutunu Kullanma
Bash Scriptlerinde basename Komutunu Kullanma
Bash scripting’te en yaygın görevlerden biri dosya yollarını manipüle etmektir—özellikle tam bir yoldan sadece dosya adını çıkarmak istediğinizde. İşte burada basename komutu devreye giriyor. Görünüşte basit olmasına rağmen, basename doğru kullanıldığında daha karmaşık scriptlerde, otomasyon araçlarında, hosting hizmetlerinde ve CI/CD ortamlarında güçlü kullanım senaryolarına sahiptir.
basename Nedir?
basename komutu dizin yolunu kaldırır ve isteğe bağlı olarak bir dosya uzantısını siler, geriye sadece temel adı (bir dosya yolunun son bileşeni) bırakır.
🔧 Temel Söz Dizimi:
basename [path] [suffix]✅ Basit Örnekler:
basename /home/user/docs/report.pdf
basename /home/user/docs/report.pdf .pdf
Scriptlerde Neden basename Kullanmalıyız?
İşte gerçek dünya scripting ihtiyaçlarına dair birkaç örnek:
Günlük Kaydı: İşlenen bir günlük dosyasının adını çıkarın.
Arşivleme: Sadece dosya adını sıkıştırılmış bir arşive ekleyin.
Otomasyon: Dosya gruplarını işleyin ve çıktı dosya adları oluşturun.
Pipelines: CI/CD adımlarında dosya adlarını çıkarın.
Bash Scriptlerinde Pratik Kullanım Senaryoları
📁 1. Günlük Kaydı ile Dosyalar Üzerinde Döngü
Bu script .log dosyaları üzerinde döngü yapar, uzantısız adını çıkarır ve her eylemi kaydeder. basename dosya adlarıyla karmaşık dize dilimleme olmadan basit bir şekilde başa çıkmayı sağlar.
📂 2. Dinamik Dosya Yolları için basename Kullanma
Diyelim ki kullanıcı girdisinden veya başka bir süreçten tam yollar alıyorsunuz:
#!/bin/bash
input_path="$1"
filename=$(basename "$input_path")
echo "The file name is: $filename"
basename kullanmak, dinamik dosya yollarıyla çalışırken esneklik sağlar, özellikle günlükler, yapılandırma dosyaları ve yedeklerin farklı dizinlerde bulunabileceği bir Linux VPS ortamında. Bu, scriptinizi sağlam hale getirir, tam bir yol olan /var/log/syslog veya ./config.txt gibi bir göreli dosya geçilse bile.
🧪 3. basename’i dirname ile Birleştirme
Yol bileşenlerini izole etmek için birlikte kullanın:
#!/bin/bash
path="/etc/nginx/nginx.conf"
echo "Directory: $(dirname "$path")"
echo "Filename: $(basename "$path")"basename ile Dosya Uzantılarını Kaldırma
Bilinen uzantıları kaldırmak istiyorsanız:
⚠️ Not: Bu yalnızca eklenti tam olarak eşleşiyorsa çalışır. Yani .txt çalışır, ancak .TXT veya .tar.gz çalışmaz, aksi takdirde açıkça belirtilmedikçe.
Birden fazla uzantı için, basename’i diğer araçlarla birleştirin:
file="/tmp/data/archive.tar.gz"
filename=$(basename "$file")
clean_name=${filename%%.*}
echo "$clean_name"
# Output: archiveVeya:





