it-swarm.com.de

Erstellen Sie eine symbolische Verknüpfung des Verzeichnisses in Ubuntu

Unten ist mein Code zum Erstellen eines Symlinks eines Verzeichnisses:

Sudo ln -s /usr/local/nginx/conf/ /etc/nginx

Ich habe bereits das Verzeichnis /etc/nginx erstellt. Ich möchte nur, dass der Inhalt des Quellverzeichnisses (/usr/local/nginx/conf/) im Inhalt des Zielverzeichnisses (/etc/nginx) enthalten ist. Aber wenn ich den Code ausführe, enthält /etc/nginx anstelle des Inhalts von conf ein Verzeichnis mit dem Namen conf. Dieses Verzeichnis enthält den gewünschten Inhalt, jedoch am falschen Speicherort.

Warum wurde ein Verzeichnis in den Zielordner verschoben, anstatt nur den Inhalt des Verzeichnisses in den Zielordner zu verschieben?

241
user959129

Dies ist das Verhalten von ln, wenn das zweite Argument ein Verzeichnis ist. Es wird ein Link zum ersten Argument gesetzt darin. Wenn Sie möchten, dass /etc/nginx der Symlink ist, sollten Sie zuerst dieses Verzeichnis entfernen und denselben Befehl ausführen.

249
FatalError

Dies ist die Aufgabe von ln, wenn das Ziel bereits vorhanden und ein Verzeichnis ist. Wenn Sie möchten, dass /etc/nginxsein ein Symlink und nicht enthalten ein Symlink ist, sollten Sie es zuerst nicht als Verzeichnis erstellen!

30
Celada

Im Skript ist so etwas nützlich:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

es verhindert, dass nach dem erneuten Ausführen des Skripts ein "fehlerhafter" geloopter Symlink erneut erstellt wird

9
kayn