Ich habe ein bestimmtes Verzeichnis voller anderer Verzeichnisse, die nach Datum sortiert (benannt) sind. Zur Vereinfachung der Bezugnahme habe ich einen Symlink, current
der auf den neuesten verweist.
In dem Skript, das neue Datumsverzeichnisse erstellt, möchte ich den current
Symlink erstellen oder korrigieren, um auf das neueste Verzeichnis zu verweisen, das einmal erstellt wurde.
Ich dachte, der entsprechende Befehl wäre nur z.
ln -fs 2017-03-01 current
Wenn der current
Symlink noch nicht vorhanden ist, funktioniert dies.
Wenn der current
Symlink jedoch bereits erstellt wurde (und beispielsweise auf das Verzeichnis verweist 2017-02-28
), funktioniert dies nicht:
Anstatt die Symlink entfernen current
und einen neuen Symlink zu schaffen , current
welche Punkte zu 2017-03-01
, wird stattdessen das Ergebnis ein gebrochenes Symlink genannt 2017-03-01
zu zeigen selbst ruht innerhalb des Verzeichnisses 2017-02-28
(das ist , wo der Symlink current
spitz und noch Punkte).
Das hat mich verblüfft, also habe ich die Spezifikationen für gelesenln
. Es stellt sich heraus, dass dies erwartetes Verhalten ist:
ZUSAMMENFASSUNG
ln [-fs] [-L|-P] source_file target_file ln [-fs] [-L|-P] source_file... target_dir
BESCHREIBUNG
...
Das zweite Synopsenformular wird angenommen, wenn der endgültige Operand ein vorhandenes Verzeichnis benennt.
Es scheint also, dass es keine Möglichkeit gibt , auch immer auf einen Symlink repoint , dass derzeit auf ein Verzeichnis auf ein neues Ziel, wo das neue Ziel einen Namen hat verschiedene vom Namen des Symlink. Funktioniert ln -fs
also nicht so, wie ich es mir vorgestellt habe.
Muss ich rm current
, oder gibt es einen anderen Ansatz, den ich übersehen habe?