Symlink zu bereits vorhandenem Verzeichnis


12

Gibt es einen geeigneten Weg, um eine Verknüpfung /home/user/app/publicherzustellen /home/user/public_html, wenn man bedenkt, dass das Ziel bereits existiert?

Wenn ich das tue ln -s /home/user/app/public /home/user/public_html, habe ich am Ende /home/user/public_html/public.

Ich denke, es wäre auch möglich, die Aktion wie umzukehren ln -s /home/user/public_html /home/user/app/public, aber ich bin mir nicht sicher, wie ich sie /home/user/app/public/public_htmlals Endergebnis vermeiden soll .

Antworten:


13

Ich verstehe Ihr Problem richtig

Ihre Quelle ist /home/user/public_htmlund ich gehe davon aus, dass dort Dateien enthalten sind. Und Sie möchten direkt in einen Link zu diesem Verzeichnis erstellen /home/user/app/public. Auf diese Weise können Sie so etwas tun ls /home/user/app/publicund sehen, auf welchen Dateien sich diese befinden /home/user/public_html.

Wenn dies korrekt ist, ist Ihre Quelle /home/user/public_htmlund das Ziel /home/user/app/public. Der richtige Befehl ist dieser:

ln -s /home/user/public_html /home/user/app/public

Stellen Sie einfach sicher, dass /home/user/app/publices sich nicht um ein gültiges Verzeichnis oder eine gültige Datei handelt. Geben Sie zuvor den Befehl ein.


3
Dies ist eine alte, aber ich denke, der Benutzer hat genau gefragt, wie er das tun soll, was Sie beschreiben, aber für den Fall, dass / home / user / app / public bereits vorhanden ist (was genau die Einschränkung ist, die Sie am Ende Ihrer Beschreibung erwähnen Antworten). Meiner Meinung nach beantwortet dies nicht die ursprüngliche Frage, da der Benutzer genau wissen wollte, wie er mit einem bereits vorhandenen Ziel umgehen soll (dh wie er es mit dem Symlink überschreiben kann, ohne es vor dem Erstellen des Symlinks löschen zu müssen).
Jotadepicas

Probieren Sie es aus - Option :)
Milkmannetje

2

Wenn ich Ihre Frage richtig verstehe, wollten Sie wissen, wie Sie mit bereits vorhandenen Zielen umgehen sollen. In diesem Fall gibt es zwei mögliche Szenarien.

1) Das vorhandene Ziel ist eine Datei. In diesem Fall können Sie die Erstellung des Symlinks mit "-f" erzwingen.

2) Das vorhandene Ziel ist ein Verzeichnis. Wenn dies der Fall ist, hängt dies von Ihrer aktuellen Implementierung des Befehls ln ab. Es könnte das „-n“ Argument zur Verfügung haben, die Ursachen Symlink auf Verzeichnisse richtig gehandhabt werden, statt duplizieren sie , wie Sie sagen.

Referenz: /unix/207294/create-symlink-overwrite-if-one-exists


Ich frage mich, warum die Abstimmung ohne Kommentar: stackoverflow.com/help/privileges/vote-down
jotadepicas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.