K získání libovolné cesty názvu cesty lze použít následující přístup:
some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))
Výstup:
c
b
a
Bash může získat poslední část cesty, aniž by musel volat externí basename
:
dir="/path/to/whatever/"
dir="${dir%/}" # strip trailing slash (if any)
subdir="${dir##*/}"
To využívá Bashovo rozšíření parametru k odstranění části řetězce před posledním (zbývajícím) lomítkem.
basename
odstraní předponu adresáře cesty:
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
Chcete-li vytisknout název souboru bez použití externích příkazů,
Spustit:
fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name
Tento příkaz musí běžet rychleji než basename
a dirname
.
Použití výstupu předchozích příkazů v bash
Existují nějaká rozhraní C API pro extrahování názvu základního souboru z jeho úplné cesty v Linuxu?