lien symbolique vers un répertoire déjà existant

12

Existe-t-il un moyen approprié d'établir un lien /home/user/app/publicavec /home/user/public_html, compte tenu du fait que la cible existe déjà?

Si je le fais ln -s /home/user/app/public /home/user/public_html, je finis par avoir /home/user/public_html/public.

Je suppose qu'il serait également possible d'inverser l'action telle que ln -s /home/user/public_html /home/user/app/public, mais je ne sais pas comment l'éviter /home/user/app/public/public_htmlcomme résultat final.

user2094178
la source

Réponses:

13

Laissez-moi comprendre votre problème de la bonne manière

Votre source est /home/user/public_htmlet je suppose qu'il contient des fichiers. Et vous souhaitez créer un lien vers ce répertoire directement /home/user/app/public. De cette façon, vous pourriez faire quelque chose comme ls /home/user/app/publicet voir les fichiers qui existent sur /home/user/public_html.

Si cela est correct, votre source l'est /home/user/public_htmlet la cible l'est /home/user/app/public. La commande appropriée est celle-ci:

ln -s /home/user/public_html /home/user/app/public

Assurez-vous simplement qu'il /home/user/app/publicne s'agit pas d'un répertoire ou d'un fichier valide, entrez la commande.

Lucio
la source
3
C'est un ancien, mais je pense que l'utilisateur a demandé exactement comment faire ce que vous décrivez, mais, dans le cas où / home / user / app / public peut déjà exister (ce qui est exactement la mise en garde que vous mentionnez à la fin de votre réponse). Donc, à mon humble avis, cela ne répond pas à la question d'origine, car l'utilisateur voulait savoir précisément comment traiter une cible déjà existante (c'est-à-dire comment la remplacer par le lien symbolique, sans avoir à le supprimer avant de créer le lien symbolique).
jotadepicas
Essayez-l'option T :)
Milkmannetje
2

Si je comprends bien votre question, vous vouliez savoir comment gérer les cibles déjà existantes. Si tel est le cas, il existe deux scénarios possibles.

1) la cible existante est un fichier. Si tel est le cas, vous pouvez forcer la création du lien symbolique avec "-f"

2) la cible existante est un répertoire. Si tel est le cas, cela dépend de votre implémentation actuelle de la commande ln. Il pourrait avoir l'argument « -n » disponible, ce qui provoque des répertoires du lien symbolique être manipulés correctement, au lieu de les dupliquer comme vous le dites.

Référence: /unix/207294/create-symlink-overwrite-if-one-exists

jotadepicas
la source
Je me demande pourquoi le downvote sans commentaire: stackoverflow.com/help/privileges/vote-down
jotadepicas