Ho una directory particolare piena di altre directory organizzate (nominate) per data. Per facilità di riferimento, ho un collegamento simbolico chiamato che current
punta a quello più recente.
Nello script che crea nuove directory di date, desidero creare o correggere il current
collegamento 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 current
collegamento simbolico non esiste ancora, funziona.
Tuttavia, se il current
collegamento simbolico è già stato creato (e indica, diciamo, nella directory 2017-02-28
), questo non funziona:
Invece di rimuovere il collegamento simbolico current
e creando un nuovo collegamento simbolico current
che 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 current
punta 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 -fs
non funziona come pensavo.
Must I rm current
, o c'è un altro approccio che ho trascurato?