Come forzare la creazione di un collegamento simbolico?


10

Ho una directory particolare piena di altre directory organizzate (nominate) per data. Per facilità di riferimento, ho un collegamento simbolico chiamato che currentpunta a quello più recente.

Nello script che crea nuove directory di date, desidero creare o correggere il currentcollegamento simbolico in modo che punti alla directory più recente una volta creata.

Ho pensato che il comando appropriato sarebbe stato, ad esempio,

ln -fs 2017-03-01 current

Se il currentcollegamento simbolico non esiste ancora, funziona.


Tuttavia, se il currentcollegamento simbolico è già stato creato (e indica, diciamo, nella directory 2017-02-28), questo non funziona:

Invece di rimuovere il collegamento simbolico currente creando un nuovo collegamento simbolico currentche indica 2017-03-01, il risultato sarà invece uno symlink rotto chiamato 2017-03-01 indicando se stessa, appoggiata all'interno della directory 2017-02-28(che è dove il link simbolico currentpunta e ancora punti).

Questo mi ha sconcertato, quindi ho letto le specifiche perln . Si scopre che questo è un comportamento previsto:

SINOSSI

ln [-fs] [-L|-P] source_file target_file

ln [-fs] [-L|-P] source_file... target_dir

DESCRIZIONE

...

Il secondo modulo di sinossi deve essere assunto quando l'operando finale nomina una directory esistente.


Sembra quindi che non vi sia alcun modo di reimpostare un collegamento simbolico che attualmente punta a una directory verso una nuova destinazione, in cui la nuova destinazione ha un nome diverso dal nome del collegamento simbolico. Quindi ln -fsnon funziona come pensavo.

Must I rm current, o c'è un altro approccio che ho trascurato?

Risposte:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.