[LINUX] Es war gefährlich, beim Generieren einer symbolischen Verknüpfung einen relativen Pfad anzugeben

08/04 Nachtrag Ich habe Ergänzungen und Korrekturen in den Kommentaren erhalten, daher werde ich gegebenenfalls Korrekturen vornehmen.

Einführung

Als ich Shell-Befehle lernte, war ich süchtig nach symbolischen Links im Sumpf, deshalb werde ich ein Memorandum hinterlassen. ~~ Ich weiß nicht, ob dies die beste Vorgehensweise ist, aber benutze so viele absolute Pfade wie möglich, um symbolische Links zu generieren. ~~

Dies ist keine bewährte Methode, da dies vom Anlass abhängt. Dies liegt daran, dass Sie anfällig für Änderungen des Installationsorts sind, wenn Sie die Dateien und Links der Linkquelle gemeinsam verwalten möchten.

Was ist eine symbolische Verbindung?

Die symbolische Verknüpfung ist eine der Funktionen des Dateisystems des Betriebssystems (OS) und ein Mechanismus zum Erstellen einer weiteren Datei, die auf eine bestimmte Datei oder ein bestimmtes Verzeichnis verweist und über diese auf den Hauptteil verweist. IT-Glossar E-Wörter

Wir erkennen, dass symbolische Links unter Linux wie Verknüpfungen unter Windows sind.

Der Zweck ist ähnlich, aber die Realität sieht ganz anders aus. Darüber hinaus verfügt Windows auch über symbolische Links (mithilfe einer Funktion namens Analysepunkte). Verknüpfungen sind nur Starter mit Informationen zum Öffnen der angegebenen Datei in der App, während symbolische Links Dateien sind, die als Alternative zur angegebenen Datei verwendet werden können. @angel_p_57

Erstellen einer symbolischen Verknüpfung

Die Befehle zum Erstellen einer symbolischen Verknüpfung sind: hoge.jpg ist ein beliebiger Dateiname, fuga ist ein beliebiger Verzeichnisname. Hier wird im fuga-Verzeichnis ein symbolischer Link für eine Datei namens hoge.jpg generiert.


$ ln -s hoge.jpg fuga

Hinweis: In diesem Fall wird "wenn das Fuga-Verzeichnis bereits vorhanden ist" wie vorgesehen ausgeführt. Ohne das Fuga-Verzeichnis würde im selben Verzeichnis ein symbolischer Link namens Fuga erstellt.

Wenn Sie "$ ln -s hoge.jpg fuga /" festlegen, wird dieser Befehl ausgeführt, wenn das Verzeichnis vorhanden ist. (Ich bezog mich auf die Kommentare, die ich erhielt)

Was du machen willst

~ / Picture / konosuba.jpg symbolischer Link, Ich möchte es in ~ / Picture / foobar generieren.

Was ich versucht habe

Wenn als relativer Pfad angegeben (fehlgeschlagen)

Angenommen, das aktuelle Verzeichnis ist ~ / Picture.


~/Picture $ ln -s konosuba.jpg foobar

konosuba.jpg wird aber im foobar-Verzeichnis generiert Dies ist zunächst einmal ein Fehler.

Der symbolische Link von konosuba.jpg, der im aktuellen Verzeichnis vorhanden ist, wird nicht in dem als relativer Pfad angegebenen Ordner foobar generiert ... **. ** ** **

Der symbolische Link konosuba.jpg, der im Verzeichnis foobar generiert wird, lautet Relativer Pfad aus Ihrer eigenen Perspektive konosuba.jpg Mit anderen Worten, denken wir darüber nach, auf konosuba.jpg im selben Verzeichnis zu verweisen.

Mit anderen Worten, es wird eine mysteriöse Datei erstellt, die als symbolischer Link bezeichnet wird und auf sich selbst verweist.

(Dies liegt daran, dass "konosuba.jpg ", das erste Argument des Shell-Befehls, als relativer Pfad basierend auf der Position des symbolischen Links selbst gelesen wird.)

Wenn als relativer Pfad angegeben (erfolgreich)

Angenommen, das aktuelle Verzeichnis ist ~ / Picture.


~/Picture $ ln -s ../konosuba1.jpg foobar

konosuba.jpg wird im Verzeichnis foobar generiert. Dies ist die richtige Antwort. Der im Verzeichnis foobar generierte symbolische Link konosuba.jpg lautet Es wird als Link generiert, der von seiner eigenen Position aus auf "../konosuba1.jpg " verweist.

Es mag kein Problem sein, wenn ich mich daran gewöhne, aber ehrlich gesagt fühlte ich mich verwirrt.

Verwenden Sie in diesem Fall die Option -r (--relative). Der Befehl ermittelt automatisch die relative Position. Mit ln -s hoge.jpg fuga / verursacht der erstellte symbolische Link fuga / hoge.jpg einen Zirkelverweis und ist nutzlos, aber mit ln -s -r hoge.jpg fuga /, fuga / hoge. Es wird ein entsprechender Link namens jpg-> ../hoge.jpg erstellt. @angel_p_57

Schreiben Sie mit einem absoluten Pfad


$ ln -s ~/Picture/konosuba.jpg ~/Picture/foobar

Mit einem absoluten Pfad kann das Risiko, dass der Überweiser nicht beabsichtigt ist, stark reduziert werden. Wenn die Verzeichnisstruktur kompliziert wird, denke ich, dass es lächerlich sein wird, aber vorerst sollte ich keinen Fehler machen ...

abschließend

Ich habe nicht das Gefühl, dass ich es gut schreiben konnte, also werde ich nach Bedarf einige Änderungen vornehmen ...

Verweise

Erste Schritte mit der Linux-Befehlszeile Ubuntu Manuals

Recommended Posts

Es war gefährlich, beim Generieren einer symbolischen Verknüpfung einen relativen Pfad anzugeben
Ich blieb stecken, als ich versuchte, einen relativen Pfad mit relative_to () in Python anzugeben
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
So setzen Sie einen symbolischen Link
Konvertieren Sie eine Pfadzeichenfolge, die einen symbolischen Link in der Mitte verwendet, in einen absoluten Pfad
Wenn ein Amateur Anti-Phasen-Musik hörte, war es verwirrend und ruhig zu besuchen.
[Selen] Wie wird der relative Pfad des Chromedriver angegeben?
Als ich versuchte, PIL und matplotlib in einer virtuellen Umgebung zu installieren, war ich süchtig danach.
[C-Sprache] Close () Es ist gefährlich, es erneut zu versuchen, wenn es fehlschlägt
Ein Memorandum beim automatischen Erwerb mit Selen
Ein Hinweis, von dem ich süchtig war, als ich unter Linux einen Piepton machte
Ein Hinweis, dem ich beim Erstellen einer Tabelle mit SQL Alchemy verfallen war
[Ln] Das Einfügen des symbolischen Links des Verzeichnisses ist kompliziert