basename ist ein Unix-Programm und ein Teil des POSIX-Standards. Es gibt aus einem Pfadnamen den Dateinamen ohne führende Verzeichnisnamen aus. Wird ein Suffix angegeben, das mit der Dateiendung übereinstimmt, wird auch das Suffix entfernt.
Anwendungsbeispiele
$ basename /home/alice/bild.jpg
bild.jpg
$ basename /home/alice/bild.jpg .jpg
bild
Mag die Funktion des alleinstehenden Programms auf den ersten Blick zunächst trivial erscheinen, so ist es dennoch von großem Nutzen zur Erledigung von Teilaufgaben im Rahmen der Skriptprogrammierung.
Bibliotheksfunktion
POSIX enthält basename auch als Funktion in der Programmiersprache C. In der Header-Datei libgen.h
ist diese wie folgt deklariert:
#include <libgen.h>
char *basename(char *path);
Rückgabewert ist der Teil von path
nach dem letzten Pfadtrennzeichen /
. In der POSIX-Variante ist dies entweder ein Pointer auf das dem letzten Trenner /
folgende Zeichen oder ein Punkt .
, falls path
leer oder NULL
ist. Die glibc-Variante gibt eine leere Zeichenkette zurück, falls path
mit einem /
endet oder nur daraus besteht. In beiden Implementierungen kann ein Pointer auf einen Teil von path
oder einen statisch belegten Speicherbereich zurückgegeben werden, weshalb empfohlen wird, die Funktion mit einer Kopie des Pfades aufzurufen.
Siehe auch
- dirname erzeugt den (komplementären) Pfad bis zum letzten Trenner
/
.
Weblinks
basename
: return non-directory portion of a pathname – Open Group Base Specificationbasename(1)
: return filename portion of pathname – OpenBSD General Commands Manualbasename(1)
: Verzeichnis und Suffix von Dateinamen entfernen – Debian GNU/Linux Ausführbare Programme oder Shell-Befehle Handbuchseite- basename(3) – extract the base portion of a pathname. OpenBSD, abgerufen am 5. Dezember 2014 (englisch).
- basename(3): parse pathname components. Debian GNU/Linux, abgerufen am 5. Dezember 2014 (englisch).