Je veux créer un lien symbolique
~/.pm2/logs -> /opt/myapp/log
Quand je cours
ln -sFf /opt/myapp/log ~/.pm2/logs
Je reçois un lien symbolique
~/.pm2/logs/log -> /opt/myapp/log
ce n'est pas ce que je veux.
Je préférerais une solution compatible POSIX si possible.
Vous avez déjà un répertoire à ~/.pm2/logs
. Puisque ce répertoire existe, le lien symbolique y est placé.
Voudriez-vous que ~/.pm2/logs
est un lien symbolique plutôt qu'un répertoire, vous devrez d'abord supprimer ou renommer ce répertoire existant.
Comme d'autres réponses le disent, il existe déjà un répertoire.
Pour éviter cela et obtenir un message d'erreur à la place, utilisez le -T
option, malheureusement je ne pense pas que ce soit Posix (c'est GNU).
Depuis le manuel Gnu ln
(idem pour cp et mv).
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET (2nd form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
ln [OPTION]... -t DIRECTORY TARGET... (4th form)
Notez le formulaire 1 sans le -T
est ambigu avec la forme 3 (les deux ont deux arguments).
Dans Posix, vous pouvez forcer cette non-ambiguïté en mettant un /
à la fin d'un nom de répertoire, dans le formulaire 3, mais je ne pense pas que vous puissiez faire l'inverse. C'est pourquoi Gnu a ajouté le -T
option.
Supprimez d'abord le répertoire ~/.pm2/logs, car votre cible est un répertoire existant, le lien est créé à l'intérieur.