it-swarm.com.de

Symlink erstellen - überschreiben, falls vorhanden

Ich möchte Daten in /path/to/data/folder/month/date/hour/minute/file Notieren und mit /path/to/recent/file Symlink und dies jedes Mal automatisch tun, wenn eine Datei erstellt wird.

Angenommen, ich werde nicht im Voraus wissen, ob /path/to/recent/file Existiert, wie kann ich es erstellen (wenn es nicht existiert) oder ersetzen (falls es existiert)? Ich bin sicher, ich kann einfach überprüfen, ob es existiert, und dann einen Lösch- und Symlink ausführen, aber ich frage mich, ob es einen einfachen Befehl gibt, der in einem Schritt das tut, was ich will.

61
drjrm3

Bitte lesen Sie das Handbuch .

ln -sfn /new/target /path/to/symlink

$ man ln

-n, --keine Dereferenzierung
Behandeln Sie LINK_NAME als normale Datei, wenn es sich um eine symbolische Verknüpfung zu einem Verzeichnis handelt

39
LithiumSix

Dies ist der Zweck der Option -f Von ln: Sie entfernt vorhandene Zieldateien, falls vorhanden, bevor der Link erstellt wird.

ln -sf /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file

erstellt den Symlink /path/to/recent/file, der auf /path/to/data/folder/month/date/hour/minute/file verweist, ersetzt bei Bedarf eine vorhandene Datei oder einen Symlink zu einer Datei (und funktioniert einwandfrei, wenn dort noch nichts vorhanden ist).

Wenn bereits ein Verzeichnis oder ein Symlink zu einem Verzeichnis mit dem Zielnamen vorhanden ist, wird der Symlink darin erstellt (im obigen Beispiel würde also /path/to/recent/file/file Erhalten). Die Option -n, Die in einigen Versionen von ln verfügbar ist, kümmert sich für Sie um Symlinks zu Verzeichnissen und ersetzt diese bei Bedarf:

ln -sfn /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file

POSIX ln gibt -n Nicht an, sodass Sie sich im Allgemeinen nicht darauf verlassen können. Ein Großteil des Verhaltens von ln ist implementierungsdefiniert, sodass Sie die Besonderheiten des von Ihnen verwendeten Systems wirklich überprüfen müssen. Wenn Sie GNU ln verwenden, können Sie auch die Optionen -t Und -T Verwenden, um das Verhalten in Gegenwart von vollständig vorhersehbar zu machen Verzeichnisse ( dh schlagen fehl, anstatt den Link innerhalb des vorhandenen Verzeichnisses mit demselben Namen zu erstellen).

87
Stephen Kitt