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_dirDESCRIZIONE
...
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?