Je veux mettre une commande dans un script shell qui créera un lien symbolique vers le répertoire, mais ce script pourrait être exécuté encore et encore, donc lors des appels ultérieurs, la commande ne devrait rien changer.
Voici la structure du répertoire:
% tree /tmp/test_symlink
/tmp/test_symlink
├── foo
└── repo
└── resources
└── snippets
├── php.snippets
├── sh.snippets
├── snippets.snippets
├── sql.snippets
└── vim.snippets
Je veux créer un lien symbolique dans des foo/
extraits appelés qui pointe vers le répertoire /tmp/test_symlink/repo/resources/snippets
.
Je lance donc:
% ln -sfv /tmp/test_symlink/repo/resources/snippets /tmp/test_symlink/foo/snippets
'/tmp/test_symlink/foo/snippets' -> '/tmp/test_symlink/repo/resources/snippets'
ce qui donne le résultat souhaité.
% tree /tmp/test_symlink
/tmp/test_symlink
├── foo
│ └── snippets -> /tmp/test_symlink/repo/resources/snippets
└── repo
└── resources
└── snippets
├── php.snippets
├── sh.snippets
├── snippets.snippets
├── sql.snippets
└── vim.snippets
5 répertoires, 5 fichiers
Cependant, lorsque la commande est réexécutée,
% ln -sfv /tmp/test_symlink/repo/resources/snippets /tmp/test_symlink/foo/snippets
'/tmp/test_symlink/foo/snippets/snippets' -> '/tmp/test_symlink/repo/resources/snippets'
il crée un lien symbolique vers un répertoire, où le lien symbolique existe déjà met le lien symbolique à l'intérieur du répertoire réel
% tree /tmp/test_symlink
/tmp/test_symlink
├── foo
│ └── snippets -> /tmp/test_symlink/repo/resources/snippets
└── repo
└── resources
└── snippets
├── php.snippets
├── sh.snippets
├── snippets -> /tmp/test_symlink/repo/resources/snippets
├── snippets.snippets
├── sql.snippets
└── vim.snippets
pourquoi cela se produit-il et comment puis-je modifier la commande afin que les invocations suivantes ne créent pas cet effet étrange?
-n, --no-dereference treat LINK_NAME as a normal file if it is a symbolic link to a directory
.-T, --no-target-directory treat LINK_NAME as a normal file always
pensez-vous qu'il est préférable de toujours traiter un lien symbolique comme un fichier? J'aurais pensé qu'il valait mieux limiter l'utilisation de ces options "spéciales"?