Der folgende Ansatz kann verwendet werden, um einen beliebigen Pfad eines Pfadnamens zu erhalten:
some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))
Ausgabe:
c
b
a
Bash kann den letzten Teil eines Pfads erhalten, ohne den externen basename
aufrufen zu müssen :
dir="/path/to/whatever/"
dir="${dir%/}" # strip trailing slash (if any)
subdir="${dir##*/}"
Dies verwendet die Parametererweiterung von Bash, um den Teil der Zeichenfolge vor dem letzten (verbleibenden) Schrägstrich zu entfernen.
basename
entfernt das Verzeichnispräfix eines Pfades:
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
Um den Dateinamen ohne Verwendung externer Befehle zu drucken,
Ausführen:
fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name
Dieser Befehl muss schneller als basename
ausgeführt werden und dirname
.