Il seguente approccio può essere utilizzato per ottenere qualsiasi percorso di un percorso:
some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))
Uscita:
c
b
a
Bash può ottenere l'ultima parte di un percorso senza dover chiamare il basename
esterno :
dir="/path/to/whatever/"
dir="${dir%/}" # strip trailing slash (if any)
subdir="${dir##*/}"
Questo utilizza l'espansione dei parametri di Bash per rimuovere la parte della stringa prima dell'ultima barra (rimanente).
basename
rimuove il prefisso di directory di un percorso:
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
Per stampare il nome del file senza utilizzare comandi esterni,
Esegui:
fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name
Questo comando deve essere eseguito più velocemente di basename
e dirname
.