Hoe bestand Basename uit te pakken zonder pad en extensie in Bash

Hoe Bestand Basename Uit Te Pakken Zonder Pad En Extensie In Bash



De opdracht basename wordt vaak gebruikt in Bash om de basisnaam van een bestand of map uit een bepaald pad op te halen door alle leidende mapcomponenten te verwijderen. Dit artikel onderzoekt hoe je de basisnaam van een bestand kunt extraheren zonder het pad en de extensie met behulp van bash.

Pak bestand Basename uit zonder pad en extensie in Bash

Om de basisnaam van een bestand te extraheren zonder het pad en de extensie, kunnen we de opdracht basename gebruiken in combinatie met de parametervervangingsfunctie van bash. De opdracht basename retourneert de laatste component van een padnaam, wat in ons geval de bestandsnaam met de extensie zou zijn. Door echter de achtervoegseloptie op te geven, kunnen we de extensie van de bestandsnaam verwijderen, hier is een voorbeeld van een bash-code:

#!bin/bash
bestandspad = / thuis / aaliyan / bash3.sh
S =$ ( basisnaam $bestandspad )
echo ' ${s%.*} '

Het bovenstaande bash-script definieert een variabele met de naam ' bestandspad ' en wijst het het pad van het bestand toe ' /home/aaliyan/bash3.sh “. Het script gebruikt vervolgens de opdracht basename om de basisnaam van het bestand uit het bestandspad te extraheren en wijst het resultaat toe aan een variabele met de naam 's'.







De tweede parameteruitbreiding verwijdert de extensie van de bestandsnaam door de kortst mogelijke overeenkomst van een willekeurig aantal tekens, gevolgd door een punt, te verwijderen met behulp van '%.*'. De resulterende tekenreeks, 'bash3', wordt vervolgens naar de console afgedrukt met behulp van de opdracht echo:





Een andere manier om de basisnaam van een bestand te extraheren zonder het bestandspad en de extensie, is door de parameteruitbreiding te gebruiken, dat wil zeggen zonder de opdracht basename te gebruiken. Hieronder vindt u de voorbeeld bash-code die de parameteruitbreidingsmethode gebruikt om de basisnaam van een bestand zonder bestand te krijgen pad en bestandsextensie:





#!bin/bash
bestandspad = / thuis / aaliyan / bash3.sh
S = ${bestandspad##*/}
echo ' ${s%.*} '

Dit is een bash-script dat een variabele met de naam 'filepath' definieert en hieraan de waarde ' /home/aaliyan/bash3.sh “. Het script gebruikt vervolgens tweemaal de parameteruitbreidingsfunctie van bash om de basisnaam van het bestand te extraheren zonder het pad en de extensie. Met name de eerste parameteruitbreiding verwijdert het pad uit de bestandsnaam door de langst mogelijke overeenkomst van een willekeurig aantal tekens te verwijderen, gevolgd door een schuine streep met '##/'.

De resulterende tekenreeks, ' bash3.sh ” wordt vervolgens toegewezen aan een variabele met de naam “s”. De tweede parameteruitbreiding verwijdert de extensie uit de bestandsnaam door de kortst mogelijke overeenkomst van een willekeurig aantal tekens, gevolgd door een punt, te verwijderen met '%.'. De resulterende tekenreeks, 'bash3', wordt vervolgens naar de console afgedrukt met behulp van de opdracht echo:



Conclusie

Het extraheren van de basisnaam van een bestand zonder het pad en de extensie is een gebruikelijke taak bij bash-scripting. Door het commando basename te gebruiken in combinatie met de parametervervanging en parameteruitbreidingsfuncties van bash, kunnen we deze taak gemakkelijk uitvoeren. Dit kan handig zijn bij het werken met bestandsnamen in scripts, bijvoorbeeld bij het hernoemen van bestanden of het uitvoeren van bewerkingen op bestanden met vergelijkbare namen.