Linux basename Command Tutorial voor Beginners (met voorbeelden)

Soms, bij het werken op de commandoregel (vooral bij het omgaan met shell scripts), ben je misschien alleen geïnteresseerd in de bestandsnaam, maar wat je wel tot je beschikking hebt is het volledige pad van het bestand. De eis is dus om de directory component van het pad te strippen. Je zult blij zijn te weten dat er een commando bestaat – basename – dat dit werk doet.

In deze handleiding zullen we de basis van ‘basename’ bespreken aan de hand van enkele gemakkelijk te begrijpen voorbeelden. Maar voor we daar op springen, is het de moeite waard te vermelden dat alle voorbeelden hier getest zijn op een Ubuntu 16.04 LTS machine.

Linux basename commando

Met het basename commando kun je onderdelen van bestandsnamen wegstrepen die niet nodig zijn. Hieronder volgt de syntaxis van het hulpmiddel:

basename NAME [SUFFIX]
basename OPTION... NAME...

En hier is wat de man pagina erover zegt:

basename - strip directory and suffix from filenames

Print NAME with any leading directory components removed. If specified, also remove a trailing
SUFFIX.

Hieronder volgen enkele vraag-antwoord-achtige voorbeelden die je een goed idee moeten geven over hoe het basename commando werkt.

Q1. Hoe werkt het commando basename?

Als je standaard het ‘basename’ commando uitvoert met een volledig pad naar een bestand als invoer, geeft het commando de bestandsnaam als uitvoer. Bijvoorbeeld, toen ik het volgende commando uitvoerde:

basename /home/himanshu/Downloads/analytics.pdf

Ik kreeg de volgende uitvoer:

analytics.pdf

Q2. Kan basename meerdere inputs aan?

Ja, dat kan het. Maar daarvoor moet je de -a commandoregel optie gebruiken. Bijvoorbeeld, toen ik het volgende commando uitvoerde:

basename -a /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png

En hier is de uitvoer die ik kreeg:

analytics.pdf
test.png

Q3. Hoe kan ik basenaam ook bestandsextensie laten strippen?

Soms wil je misschien alleen de bestandsnaam ophalen, maar niet de extensie. Welnu, dit kan met de -s commandolijnoptie (die vereist dat je het achtervoegsel als invoer doorgeeft).

Bijvoorbeeld, het volgende commando:

basename -s .pdf /home/himanshu/Downloads/analytics.pdf

produceerde deze uitvoer:

analytics

Q4. Hoe laat je elke regel uitvoer eindigen met NUL?

Standaard wordt het teken newline gebruikt als scheidingsteken in de uitvoer. Als je wilt, kun je basename echter dwingen NUL als scheidingsteken te gebruiken. Dit kun je doen met de -z commandoregel optie.

Bijvoorbeeld:

basename -az /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png

En hier is de uitvoer:

analytics.pdftest.png

Je ziet hier dus niet het NUL teken. Daarvoor moet je de uitvoer omleiden naar een bestand, en dat bestand dan openen in een editor als vim. Hier zie je wat vim liet zien:

Conclusie

Zoals je ziet is basename niet een erg functierijk commando – de mogelijkheden die het biedt zijn beperkt, en de meeste daarvan zijn hier in deze leerprogramma’s besproken. Als je klaar bent met deze te oefenen, ga dan naar deman pagina van het gereedschap om er meer over te leren.