El siguiente enfoque se puede utilizar para obtener cualquier ruta de un nombre de ruta:
some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))
Salida:
c
b
a
Bash puede obtener la última parte de una ruta sin tener que llamar al basename
externo :
dir="/path/to/whatever/"
dir="${dir%/}" # strip trailing slash (if any)
subdir="${dir##*/}"
Esto usa la expansión de parámetros de Bash para eliminar la parte de la cadena antes de la última barra inclinada (restante).
basename
elimina el prefijo de directorio de una ruta:
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
Para imprimir el nombre del archivo sin usar comandos externos,
Ejecutar:
fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name
Este comando debe ejecutarse más rápido que basename
y dirname
.