Dans mon script, j'ai besoin du répertoire du fichier avec lequel je travaille. Par exemple, le fichier = "stuff/backup/file.Zip". J'ai besoin d'un moyen d'obtenir la chaîne "stuff/backup /" à partir de la variable $file
.
dirname $file
est ce que vous cherchez
dirname $file
va sortir
stuff/backup
qui est l'opposé de basename
:
basename $file
serait sortie
file.Zip
Pour obtenir directorypath
à partir de filepath
:
file="stuff/backup/file.Zip"
dirPath=${file%/*}/
echo ${dirPath}
En utilisant ${file%/*}
comme suggéré par Urvin/LuFFy est techniquement meilleur puisque vous ne comptez pas sur une commande externe. Pour obtenir le nom de base de la même manière, vous pouvez utiliser ${file##*/}
. Il est inutile d'utiliser une commande externe à moins que vous n'en ayez besoin.
file="/stuff/backup/file.Zip"
filename=${1##*/} # file.Zip
directory=${1%/*} # /stuff/backup
Il serait également entièrement conforme à POSIX de cette façon. J'espère que ça aide! :-)
Utilisez simplement $ dirname /home/~username/stuff/backup/file.Zip
Il retournera /home/~username/stuff/backup/