7 votes

Cas d'utilisation de readlink -f vs. readlink -e

J'ai utilisé readlink -f y readlink -e à de multiples occasions pour résoudre les liens symboliques et, pour autant que je m'en souvienne, ils donnent les mêmes résultats. La page de manuel de readlink de man readlink dit :

-f, --canonicalize
       canonicalize by following every symlink in every component of the given name recursively; all but the last component must exist

-e, --canonicalize-existing
       canonicalize by following every symlink in every component of the given name recursively, all components must exist

Après avoir lu la page de manuel, bien que je comprenne les différences techniques entre le -f y -e Je ne peux pas penser à des situations spécifiques où j'utiliserais l'une ou l'autre de ces options. Existe-t-il des cas d'utilisation spécifiques et des circonstances où l'on peut préférer utiliser l'une ou l'autre des options ? readlink -f a readlink -e et vice versa ?

8voto

heemayl Points 85741

Tout d'abord, les deux vont canoniser les noms de fichiers qui incluent :

  • Conversion de tous les chemins relatifs en chemins absolus

  • Conversion de tous les liens symboliques en chemins réels sur la hiérarchie du système de fichiers.

Les principales différences sont les suivantes :

  • -f canonisera un chemin qui peut contenir une partie inexistante du système de fichiers seulement à la fin, par exemple un répertoire ou un fichier, un statut de sortie non nul sinon ; d'autre part, -e ne fonctionnera que si tous les composants existent dans le système de fichiers, état de sortie non nul sinon

  • Toute queue / est ignorée dans -f , -e traite les résidus / comme un répertoire


Donc, pratiquement :

  • Utilisez -e lorsque vous voulez vous assurer qu'un chemin doit exister, par exemple, vous avez besoin du statut de sortie pour effectuer toute autre opération logique, un if - else tester précisément

  • Utilisez -f lorsque vous ne voulez pas que le chemin d'accès existe strictement maintenant, mais que vous avez besoin du chemin d'accès complet plus tard, par exemple lorsque vous voulez créer le fichier résolu après l'exécution d'un processus ou le montage d'un système de fichiers, etc.

  • Utilisez -e avec une queue / pour rechercher une entrée de répertoire explicitement en tant que -f ignore la fin de la phrase /

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X