Commande dirname Linux

Linux 命令大全Référence des commandes 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 :

  1. Supprimer toutes les barres obliques finales (/) du chemin
  2. Supprimer la dernière barre oblique et tous les caractères qui la suivent
  3. Si le résultat est vide, afficher "." (répertoire courant)

Diagramme de flux de traitement


Exemples d'utilisation

Utilisation de base

Exemple

$ dirname /home/user/docs/file.txt
/home/user/docs

$ dirname relative/path/to/file
relative/path/to

Traitement de plusieurs fichiers

Exemple

$ dirname /a/b/c.txt /x/y/z.txt
/a/b
/x/y

Gestion des chemins spéciaux

Exemple

$ dirname /usr/bin/      # Notez la barre oblique finale
/usr

$ dirname file.txt       # Uniquement le nom de fichier
.

$ dirname /              # Répertoire racine
/

Utilisation dans les scripts

Exemple

#!/bin/bash

# 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

#!/bin/bash
# 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

# Supposons que nous sachions que le fichier se trouve dans un sous-répertoire d'un certain répertoire
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

# Décomposer le chemin complet
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

dirname "$(readlink -f "/path/with/symlink")"

Gestion des espaces: Lorsque le chemin contient des espaces, assurez-vous d'utiliser des guillemets

Exemple

dirname "/path/with spaces/file.txt"

Chemins relatifs: La sortie restera sous forme de chemin relatif

Exemple

$ dirname ../parent/file.txt
../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

touch /tmp/testfile
dirname /tmp/testfile

Écrire un script qui affiche son propre répertoire

Exemple

#!/bin/bash
echo "Ce script se trouve à :$(dirname "$0")"

Essayez de traiter les chemins comportant des espaces et des caractères spéciaux

Exemple

mkdir -p "/tmp/my dir"
touch "/tmp/my dir/special file.txt"
dirname "/tmp/my dir/special file.txt"

Linux 命令大全Référence des commandes Linux

Autres extensions