Commande realpath Linux
realpath est un outil en ligne de commande pratique dans les systèmes Linux, utilisé pour résoudre le chemin absolu d'un fichier ou d'un répertoire (un chemin absolu est le chemin complet commençant par le répertoire racine /). Il résout tous les liens symboliques et normalise les références dans le chemin vers.(répertoire courant) et..(répertoire parent).
Pourquoi avez-vous besoin de realpath
Dans le travail quotidien, nous rencontrons souvent les situations suivantes :
- Besoin d'obtenir le chemin absolu d'un script ou d'un fichier de configuration
- Lorsqu'on traite des chemins contenant des liens symboliques, on souhaite connaître l'emplacement réel vers lequel ils pointent
- Normaliser les chemins saisis par l'utilisateur pour éliminer les références de chemin relatif
- Garantir l'exactitude des chemins dans la programmation de scripts
La commande realpath est conçue spécialement pour résoudre ces problèmes.
Syntaxe de base
realpath [选项] 文件或目录...
Explication des options courantes
| Option | Description |
|---|---|
-eou--canonicalize-existing |
Ne résoudre que les chemins qui existent réellement (comportement par défaut) |
-mou--canonicalize-missing |
Résoudre le chemin même s'il n'existe pas |
-Lou--logical |
Lors de la résolution des liens symboliques, ne pas suivre les liens symboliques |
-Pou--physical |
Lors de la résolution des liens symboliques, suivre tous les liens symboliques (comportement par défaut) |
-qou--quiet |
Mode silencieux, ne pas afficher les messages d'erreur |
--relative-to=DIR |
Retourner un chemin relatif au répertoire spécifié |
--relative-base=DIR |
Normaliser uniquement la partie du chemin située sous le répertoire spécifié |
-sou--stripou--no-symlinks |
Ne pas développer les liens symboliques |
-zou--zero |
Séparer la sortie par des caractères NUL au lieu de caractères de saut de ligne |
Exemples d'utilisation
Exemple 1 : Obtenir le chemin absolu d’un fichier
Exemple
/home/user/documents/example.txt
Exemple 2 : Résoudre les liens symboliques
Supposons/usr/bin/pythonest un lien symbolique pointant vers/usr/bin/python3.8le lien symbolique :
Exemple
/usr/bin/python3.8
Exemple 3 : Gérer un chemin inexistant
Exemple
/nonexistent/path
Exemple 4 : Obtenir un chemin relatif
Exemple
documents/file.txt
Exemple 5 : Traiter plusieurs fichiers par lots
Exemple
/home/user/file1.txt
/home/user/file2.txt
/home/user/dir
Scénarios d'application pratiques
Scénario 1 : Obtenir le chemin absolu du script actuel dans un script
Exemple
SCRIPT_PATH=$(realpath "$0")
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
echo "Le répertoire où se trouve le script :$SCRIPT_DIR"
Scénario 2 : Comparer si deux chemins pointent vers le même emplacement
Exemple
path2=$(realpath "/actual/path")
if [ "$path1" = "$path2" ]; then
echo "Les deux chemins pointent vers le même emplacement"
fi
Scénario 3 : Normaliser les chemins saisis par l'utilisateur
Exemple
normalized_path=$(realpath -m "$user_path")
echo "Chemin normalisé :$normalized_path"
Questions fréquemment posées (FAQ)
Q1 : Quelle est la différence entre realpath et readlink ?
readlinkIl est principalement utilisé pour lire la cible vers laquelle pointe un lien symbolique, tandis querealpathoffre une fonctionnalité de résolution de chemin plus complète, incluant la gestion des références de chemin relatives et la normalisation des formats de chemin.
Q2 : Pourquoi mon système n'a-t-il pas la commande realpath ?
realpath fait partie de GNU coreutils, mais certaines distributions Linux allégées peuvent ne pas l'avoir préinstallé. Vous pouvez l'obtenir en installant le paquet coreutils :
Exemple
sudo apt install coreutils
# RHEL/CentOS
sudo yum install coreutils
Q3 : Comment implémenter une fonctionnalité similaire sur les systèmes qui ne prennent pas en charge realpath ?
Vous pouvez utiliser une combinaison de commandes :
Exemple
readlink -f /path/to/file
# Ou
(cd /path/to/file && pwd -P)
Recommandations de bonnes pratiques
- Toujours utiliser des chemins absolus dans les scripts: pour éviter les problèmes de chemin causés par des changements du répertoire de travail
- Normaliser d'abord les chemins lors de la gestion des entrées utilisateur: pour prévenir les attaques par injection de chemin
- Vérifier si le chemin existe: utiliser l'
-eoption pour garantir que le chemin est valide - Tenir compte de l'impact des liens symboliques: déterminer clairement si les liens symboliques doivent être résolus
- Gérer les chemins contenant des caractères spéciaux tels que des espaces: toujours mettre les variables de chemin entre guillemets
Résumé
realpath est un outil de traitement de chemins simple mais puissant, particulièrement adapté à une utilisation en programmation de scripts et en administration système. Grâce à cet article, vous devriez avoir maîtrisé :
- Les fonctions de base et la syntaxe de realpath
- Les utilisations spécifiques des différentes options
- Scénarios d'application pratiques et exemples de code
- Solutions aux problèmes courants
- Bonnes pratiques d'utilisation
Maintenant, vous pouvez commencer à appliquer la commande realpath dans vos projets pour rendre la gestion des chemins plus fiable et sécurisée !
Autres extensions
Référence des commandes Linux