L'approche suivante peut être utilisée pour obtenir n'importe quel chemin d'un nom de chemin :
some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))
Sortie :
c
b
a
Bash peut obtenir la dernière partie d'un chemin sans avoir à appeler le basename
externe :
dir="/path/to/whatever/"
dir="${dir%/}" # strip trailing slash (if any)
subdir="${dir##*/}"
Cela utilise l'expansion des paramètres de Bash pour supprimer la partie de la chaîne avant la dernière barre oblique (restante).
basename
supprime le préfixe de répertoire d'un chemin :
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
Pour imprimer le nom du fichier sans utiliser de commandes externes,
Exécuter :
fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name
Cette commande doit s'exécuter plus rapidement que basename
et dirname
.