J'ai un répertoire particulier plein d'autres répertoires organisés (nommés) par date. Pour plus de commodité, j'ai un lien symbolique appelé current
pointant vers le dernier.
Dans le script qui crée de nouveaux répertoires de date, je souhaite créer ou corriger le current
lien symbolique pour pointer vers le répertoire le plus récent une fois créé.
Je pensais que la commande appropriée serait simplement, par exemple,
ln -fs 2017-03-01 current
Si le current
lien symbolique n'existe pas encore, cela fonctionne.
Cependant, si le current
lien symbolique a déjà été créé (et pointe, disons, sur le répertoire 2017-02-28
), cela ne fonctionne pas:
Au lieu de supprimer le lien symbolique current
et de créer un nouveau lien symbolique vers current
lequel pointe 2017-03-01
, le résultat sera à la place un lien symbolique cassé appelé 2017-03-01
pointant vers lui-même, reposant à l' intérieur du répertoire 2017-02-28
(qui est l'endroit où le lien symbolique current
pointait et pointe toujours).
Cela m'a dérouté, alors j'ai lu les spécifications pourln
. Il s'avère que c'est un comportement attendu:
SYNOPSIS
ln [-fs] [-L|-P] source_file target_file ln [-fs] [-L|-P] source_file... target_dir
LA DESCRIPTION
...
La deuxième forme de synopsis doit être supposée lorsque l'opérande final nomme un répertoire existant.
Il semble donc qu'il n'y ait aucun moyen de rediriger un lien symbolique qui pointe actuellement vers un répertoire vers une nouvelle cible, où la nouvelle cible a un nom différent du nom du lien symbolique. Donc ln -fs
ça ne marche pas comme je le pensais.
Dois- je le faire rm current
ou y a-t-il une autre approche que j'ai négligée?