Comment forcer la création d'un lien symbolique?

10

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é currentpointant vers le dernier.

Dans le script qui crée de nouveaux répertoires de date, je souhaite créer ou corriger le currentlien 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 currentlien symbolique n'existe pas encore, cela fonctionne.


Cependant, si le currentlien 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 currentet de créer un nouveau lien symbolique vers currentlequel 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 currentpointait 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 currentou y a-t-il une autre approche que j'ai négligée?

Caractère générique
la source

Réponses: