Bash'te Yol ve Uzantı Olmadan Dosya Temel Adını Çıkarma

Bash Te Yol Ve Uzanti Olmadan Dosya Temel Adini Cikarma



Basename komutu, Bash'te, önde gelen dizin bileşenlerini kaldırarak belirli bir yoldan bir dosyanın veya dizinin temel adını almak için yaygın olarak kullanılır. Bu makale, bash kullanarak bir dosyanın temel adının yolu ve uzantısı olmadan nasıl çıkarılacağını keşfedecektir.

Bash'te Yol ve Uzantı Olmadan Dosya Temel Adını Çıkarın

Bir dosyanın temel adını yolu ve uzantısı olmadan çıkarmak için, basename komutunu bash'ın parametre değiştirme özelliği ile birlikte kullanabiliriz. basename komutu, bir yol adının son bileşenini döndürür; bu, bizim durumumuzda uzantılı dosya adı olacaktır. Ancak, sonek seçeneğini belirterek, uzantıyı dosya adından çıkarabiliriz, işte bir örnek bash kodu:

#!bin/bash
dosya yolu = / Ev / aaliyan / bash3.sh
S = $ ( temel isim $dosya yolu )
Eko ' ${s%.*} '

Yukarıdaki bash betiği, “adlı bir değişkeni tanımlar. dosya yolu ” ve ona dosyanın yolunu atar” /home/aaliyan/bash3.sh “. Betik daha sonra dosyanın temel adını dosya yolundan çıkarmak için basename komutunu kullanır ve sonucu 's' adlı bir değişkene atar.







İkinci parametre genişletmesi, herhangi bir sayıdaki karakterin mümkün olan en kısa eşleşmesini ve ardından “%.*” kullanarak bir noktayı kaldırarak dosya adından uzantıyı kaldırır. Ortaya çıkan 'bash3' dizisi daha sonra echo komutu kullanılarak konsola yazdırılır:





Bir dosyanın temel adını dosya yolu ve uzantısı olmadan ayıklamanın başka bir yolu, basename komutunu kullanmadan parametre genişletmeyi kullanmaktır, aşağıda dosyasız bir dosyanın temel adını almak için parametre genişletme yöntemini kullanan örnek bash kodu verilmiştir. yol ve dosya uzantısı:





#!bin/bash
dosya yolu = / Ev / aaliyan / bash3.sh
S = ${filepath##*/}
Eko ' ${s%.*} '

Bu, 'filepath' adlı bir değişkeni tanımlayan ve ona 'değeri' atayan bir bash betiğidir. /home/aaliyan/bash3.sh “. Betik daha sonra bash'ın parametre genişletme özelliğini iki kez kullanarak dosyanın temel adını yolu ve uzantısı olmadan ayıklamak için kullanır. Spesifik olarak, ilk parametre genişletmesi, herhangi bir sayıda karakterin mümkün olan en uzun eşleşmesini ve ardından “##/” kullanarak eğik çizgiyi kaldırarak dosya adından yolu kaldırır.

Ortaya çıkan dize, “ bash3.sh ” daha sonra “s” adlı bir değişkene atanır. İkinci parametre genişletmesi, herhangi bir sayıda karakterin mümkün olan en kısa eşleşmesini ve ardından “%.” kullanarak bir noktayı kaldırarak dosya adından uzantıyı kaldırır. Ortaya çıkan 'bash3' dizisi daha sonra echo komutu kullanılarak konsola yazdırılır:



Çözüm

Bir dosyanın temel adını yolu ve uzantısı olmadan ayıklamak, bash betiklerinde yaygın bir görevdir. basename komutunu bash'ın parametre değiştirme ve parametre genişletme özellikleriyle birlikte kullanarak bu görevi kolayca başarabiliriz. Bu, komut dosyalarında dosya adlarıyla çalışırken, örneğin dosyaları yeniden adlandırırken veya benzer adlara sahip dosyalar üzerinde işlemler gerçekleştirirken faydalı olabilir.