La commande dirname sous Linux imprime un chemin de fichier avec son composant final supprimé. Cela vous donne essentiellement le chemin du répertoire à partir du chemin du fichier.
Ceci est particulièrement utile dans les scripts bash où vous souhaitez extraire le chemin du répertoire à partir du chemin du fichier long.
La commande dirname est complémentaire de la commande basename. La commande basename extrait le nom du fichier du chemin tandis que dirname extrait le chemin du répertoire.
Laissez-moi vous le montrer avec quelques exemples.
Exemples de commandes Dirname
La commande dirname a une syntaxe simple.
dirname OPTION PATH
L'utilisation de la commande dirname avec le chemin absolu d'un fichier donnera le chemin du répertoire :
dirname /home/user/data/filename.txt
/home/user/data
Comme la commande basename, la commande dirname est aussi stupide en fait. Il ne reconnaît pas vraiment le chemin du fichier. Il recherche simplement les barres obliques (/) et imprime ce qui se trouve avant la dernière barre oblique. Fondamentalement, vous pouvez lui donner n'importe quelle chaîne avec / et cela fonctionnera dessus.
Par exemple, j'utilise ici une chaîne aléatoire sans nom de fichier. Vous pouvez voir qu'il fonctionne toujours de la même manière et génère une chaîne supprimant le dernier / et le texte qui le suit.
Si le chemin ne contient pas de barre oblique (/), il affichera un point (.) impliquant le répertoire actuel.
Vous pouvez également utiliser dirname avec plusieurs chemins. Il renverra la sortie pour chaque chemin dans une nouvelle ligne :
Vous pouvez utiliser l'option -z pour obtenir le résultat dans la même ligne avec des sorties séparées par le caractère NULL.
Utilisation de dirname dans le script bash
J'ai montré quelques exemples de la commande dirname. Parlons de l'utilisation de dirname dans les scripts bash.
Supposons que vous ayez une variable de chemin de fichier et que vous souhaitiez obtenir le chemin d'accès au répertoire contenant le fichier. Il peut s'agir d'un simple script :
pathname="/home/dir/data/filename"
result=$(dirname "$pathname")
echo $result
Comme je l'ai mentionné précédemment, la commande dirname est complétée par la commande basename. Contrairement à dirname, la commande basename imprime uniquement le dernier composant du chemin.
J'espère que ce tutoriel vous a plu. Comme toujours, n'hésitez pas à poser des questions ou à faire des suggestions dans la section des commentaires.
Vous avez aimé l'article ? S'il vous plaît partagez-le et aidez-nous à grandir :)