Commande realpath Linux

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

$ realpath example.txt
/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

$ realpath /usr/bin/python
/usr/bin/python3.8

Exemple 3 : Gérer un chemin inexistant

Exemple

$ realpath -m /nonexistent/path
/nonexistent/path

Exemple 4 : Obtenir un chemin relatif

Exemple

$ realpath --relative-to=/home/user /home/user/documents/file.txt
documents/file.txt

Exemple 5 : Traiter plusieurs fichiers par lots

Exemple

$ realpath file1.txt file2.txt dir/
/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

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

path1=$(realpath "/path/to/link")
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

read -p "Veuillez saisir un chemin de fichier : " user_path
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

# Debian/Ubuntu
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

# Obtenir le chemin absolu
readlink -f /path/to/file

# Ou
(cd /path/to/file && pwd -P)

Recommandations de bonnes pratiques

  1. 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
  2. Normaliser d'abord les chemins lors de la gestion des entrées utilisateur: pour prévenir les attaques par injection de chemin
  3. Vérifier si le chemin existe: utiliser l'-eoption pour garantir que le chemin est valide
  4. Tenir compte de l'impact des liens symboliques: déterminer clairement si les liens symboliques doivent être résolus
  5. 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 !


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

Autres extensions