Utilizarea comenzii basename în scripturile Bash

popular
ÎMBUNĂTĂȚEȘTE CONFIGURAREA SERVERULUI TĂU! APLICĂ AVA ŞI LANSARE CU O 15% DISCOUNT
FOLOSEȘTE PROMO:

Utilizarea comenzii basename în scripturile Bash

În scripturile Bash, una dintre cele mai frecvente sarcini este manipularea căilor de acces la fișiere – în special atunci când doriți să extrageți doar numele fișierului dintr-o cale completă. Aici intervine comanda basename. Deși aparent simplă, basename are cazuri de utilizare puternice atunci când este utilizată corect în scripturi mai complexe, instrumente de automatizare, servicii de găzduire și medii CI/CD.

Ce este basename?

Comanda basename elimină calea directorului și, opțional, o extensie de fișier, lăsând doar numele de bază (componenta finală a căii unui fișier).

🔧 Sintaxă de bază:

✅ Exemple simple:

De ce să folosiți basename în scripturi?

Iată doar câteva exemple de nevoi reale de scripting:

Cazuri practice de utilizare în scripturile Bash

📁 1. Parcurgerea în buclă a fișierelor cu logare

Acest script parcurge în buclă fișierele .log, extrage numele fără extensie și înregistrează fiecare acțiune. basename simplifică manipularea numelor de fișiere fără a efectua o feliere complexă a șirurilor.

📂 2. Utilizarea basename pentru căile dinamice ale fișierelor

Să presupunem că primiți căi complete de la intrarea utilizatorului sau de la un alt proces:

Utilizarea basename în scriptul dvs. asigură flexibilitate atunci când lucrați cu căi dinamice ale fișierelor, în special în medii precum un VPS Linux în care jurnalele, fișierele de configurare și copiile de rezervă pot fi localizate în directoare diferite. Acest lucru face ca scriptul dvs. să fie robust indiferent dacă i se transmite o cale completă precum /var/log/syslog sau un fișier relativ precum ./config.txt.

🧪 3. Combinarea basename cu dirname

Utilizați-le împreună pentru a izola elementele căii:

Eliminarea extensiilor de fișier cu basename

Dacă doriți să eliminați extensiile cunoscute:

⚠️ Notă: Acest lucru funcționează numai dacă sufixul se potrivește exact. Astfel, .txt funcționează, dar .TXT sau .tar.gz nu vor funcționa decât dacă sunt specificate explicit.

Pentru extensii multiple, combinați basename cu alte instrumente:

Sau:

basename vs Extinderea parametrilor

Deși basename este intuitiv, acesta generează un subproces. Pentru scripturi cu performanțe critice sau bucle mari, preferați alternative Bash pure:

Bash Native Equivalent:

Eliminați extensia cu Bash nativ: