Commande dirname Linux
Qu'est-ce que la commande dirname ?
dirnameC'est un outil en ligne de commande simple mais pratique dans les systèmes Linux/Unix, utilisé pour extraire la partie répertoire d'un chemin de fichier. Il vous aide à obtenir rapidement le répertoire parent d'un chemin sans analyser manuellement les chaînes.
Fonctionnalité de base
- Entrée : une chaîne de chemin de fichier
- Sortie : la partie répertoire du chemin (c'est-à-dire ce qui reste après suppression de la dernière barre oblique et de tout ce qui la suit)
Syntaxe de commande
dirname [选项] 文件名...
Description du paramètre
- filename: peut être un ou plusieurs chemins de fichiers (prend en charge les chemins absolus et relatifs)
- **...** : indique que plusieurs chemins de fichiers peuvent être traités en même temps
Options
Bien que dans la plupart des casdirnameaucune option ne soit nécessaire, la version GNU prend en charge les options standard suivantes :
| Option | Description |
|---|---|
-z |
Utiliser le caractère NUL (\0) pour séparer la sortie au lieu des sauts de ligne |
--help |
Afficher les informations d'aide |
--version |
Afficher les informations de version |
Comment ça marche
dirnameLa commande traite les chemins selon les étapes suivantes :
- Supprimer toutes les barres obliques finales (/) du chemin
- Supprimer la dernière barre oblique et tous les caractères qui la suivent
- Si le résultat est vide, afficher "." (répertoire courant)
Diagramme de flux de traitement

Exemples d'utilisation
Utilisation de base
Exemple
/home/user/docs
$ dirname relative/path/to/file
relative/path/to
Traitement de plusieurs fichiers
Exemple
/a/b
/x/y
Gestion des chemins spéciaux
Exemple
/usr
$ dirname file.txt # Uniquement le nom de fichier
.
$ dirname / # Répertoire racine
/
Utilisation dans les scripts
Exemple
# Obtenir le répertoire du script
SCRIPT_DIR=$(dirname "$0")
echo "Répertoire du script :$SCRIPT_DIR"
# Obtenir le répertoire du chemin du fichier de configuration
CONFIG_PATH="/etc/app/config.cfg"
CONFIG_DIR=$(dirname "$CONFIG_PATH")
echo "Répertoire de configuration :$CONFIG_DIR"
Cas d'utilisation courants
1. Obtenir le répertoire du script
Exemple
# Obtenir le chemin absolu du répertoire du script
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
echo "Répertoire du script :$SCRIPT_DIR"
2. Construction de chemins relatifs
Exemple
BASE_DIR="/var/log"
FULL_PATH="$BASE_DIR/app/error.log"
# Obtenir le répertoire des logs
LOG_DIR=$(dirname "$FULL_PATH")
3. Utilisation avec basename
Exemple
FULL_PATH="/home/user/docs/report.pdf"
DIR=$(dirname "$FULL_PATH")
FILE=$(basename "$FULL_PATH")
echo "Répertoire :$DIR"
echo "Nom du fichier :$FILE"
Notes
Liens symboliques:dirnameIl ne résout pas les liens symboliques ; si vous devez les résoudre, vous pouvez combiner avecreadlinkuse
Exemple
Gestion des espaces: Lorsque le chemin contient des espaces, assurez-vous d'utiliser des guillemets
Exemple
Chemins relatifs: La sortie restera sous forme de chemin relatif
Exemple
../parent
Entrée vide: Si aucun argument n'est fourni, la version GNU affiche ".", mais ce n'est pas le comportement standard POSIX
Comparaison avec des commandes similaires
| Commande | Fonction | Exemple d'entrée | Exemple de sortie |
|---|---|---|---|
dirname |
Extraire la partie répertoire | /a/b/c.txt | /a/b |
basename |
Extraire la partie nom de fichier | /a/b/c.txt | c.txt |
realpath |
Obtenir le chemin absolu (résoudre les liens symboliques) | ../file | /full/path/to/file |
Exercices pratiques
Créer un fichier de test et obtenir le chemin de son répertoire
Exemple
dirname /tmp/testfile
Écrire un script qui affiche son propre répertoire
Exemple
echo "Ce script se trouve à :$(dirname "$0")"
Essayez de traiter les chemins comportant des espaces et des caractères spéciaux
Exemple
touch "/tmp/my dir/special file.txt"
dirname "/tmp/my dir/special file.txt"
Autres extensions
Référence des commandes Linux