Symlink zum aktuellen Ordner als absoluter Pfad, ohne den gesamten Pfad einzugeben
10502
Gareth
Symlinks sind gespeicherte Verknüpfungen für relative Pfade:
~/foo➤ ln -s . ~/bar/foo ~/foo➤ ls -l ~/bar total 8 lrwxr-xr-x 1 me me 1B 15 May 14:38 foo -> .
Die Datei ~/bar/fooist ein Symlink zum baraktuellen Verzeichnis, dh sich selbst
Was ist, wenn ich in einem anderen Verzeichnis einen Symlink zu dem Verzeichnis erstellen möchte, in dem ich mich gerade befinde? Also im obigen Beispiel bin ich dabei ~/foound möchte ~/bar/fooals Symlink dazu erstellen ~/foo. Mein aktuelles Verzeichnis kann natürlich etwas länger als 5 Zeichen sein und ist möglicherweise nicht so einfach einzugeben.
2 Antworten auf die Frage
13
Huygens
Ich würde Typ sagen
ln -s $PWD ~/bar/
oder
ln -s `pwd` ~/bar/
Sie könnten auch verwenden
ln -s $PWD ~/bar/
Aber ich denke, das wussten Sie, und das ist es nicht, wonach Sie suchen. Könnten Sie bitte Ihre Frage aktualisieren, um zu erklären, was Ihr Ziel ist?
Wenn der Pfad Leerzeichen enthält, ist es ratsam, Folgendes zu verwenden:
ln -s "$PWD" ~/bar/
Zitieren Sie Ihre `$` -Variablen und Ersetzungsbefehle doppelt. Andernfalls führen Dateinamen mit Leerzeichen zu einem Lauf. Sie brauchen auch nicht die Endung $ (Basisname $ PWD) (und Sie haben ein $ vergessen (und das Zitat :-))), da dies ohnehin der Standard-Linkname ist.
Daniel Andersson vor 12 Jahren
2
Ich glaube ich war dumm. Ich dachte, ich habe den Ansatz "pwd" ausprobiert und etwas lief schief. Lassen Sie uns das auf einen ID-ten-T-Fehler zurückführen
Gareth vor 12 Jahren
0
@DanielAndersson Sie haben Recht, dass es keine Leerzeichen im Pfad unterstützt. Guter Punkt. also für das Protokoll werde ich die Antwort aktualisieren :)
Huygens vor 12 Jahren
0
3
Daniel Andersson
Absolut:
ln -s "$(readlink -f .)" ~/bar
(Vielleicht gut für die Allgemeinheit in Skripten) oder einfach
ln -s ~/foo ~/bar
Verhältnismäßig:
ln -s ../foo ~/bar
Das Ausfüllen von Registerkarten hilft Ihnen bei der Eingabe.
* Bemerkenswerte Änderungen in Release 8.16 (2012-03-26) [stabil]
...
lnakzeptiert jetzt die --relativeOption, eine relative symbolische Verknüpfung zu einem Ziel zu generieren, unabhängig davon, wie das Ziel festgelegt ist.
Also mit dieser Version:
ln -s --relative . ~/bar
sollte funktionieren (mit in der Praxis ist dein erstes Beispiel mit dem Hinzufügen des --relativeSchalters identisch ).
Neueste * coreutils * können automatisch relative Symlinks mit `ln -s -r foo ~ / bar` erstellen.
grawity vor 12 Jahren
4
@Grawity: Interessant. Offenbar noch nicht auf meinem System (Debian Sid).
Daniel Andersson vor 12 Jahren
0
Laut git scheint es am 22. März für Version 8.16 hinzugefügt worden zu sein.
grawity vor 12 Jahren
0
Was ist auch der Vorteil von $ (readlink -f.) `Gegenüber $ PWD?
grawity vor 12 Jahren
1
@Grawity: Nicht viel. Sie funktionieren anders, wenn das aktuelle Arbeitsverzeichnis über einen Link erreicht wurde. `readlink -f` wird dann mit dem absoluten Zielpfad des aktuellen Verzeichnisses symbolisch verbunden, während $ PWD mit dem aktuellen Verzeichnis, in dem sich ein Verzeichnis befindet, symbolisch verknüpft wird. Was gewünscht wird, ist wahrscheinlich von Zeit zu Zeit verschieden und in erster Linie wahrscheinlich überhaupt kein Problem.
Daniel Andersson vor 12 Jahren
2