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/foo
ist ein Symlink zu bar
s aktuelles Verzeichnis, d. h. sich selbst
Was ist, wenn ich in einem anderen Verzeichnis einen Symlink zu dem Verzeichnis erstellen möchte, in dem ich mich gerade befinde? Im obigen Beispiel bin ich dabei ~/foo
und ich möchte schaffen ~/bar/foo
als symbollink zu ~/foo
. Mein aktuelles Verzeichnis kann natürlich etwas länger als 5 Zeichen sein und ist möglicherweise nicht so einfach einzugeben.
quelle
$
Variablen und Befehlssubstitutionen, andernfalls werden Dateinamen mit Leerzeichen den Lauf stören. Sie brauchen das Ende auch nicht$(basename $PWD)
(und du hast vergessen a$
(und quoting :-))) da dies ohnehin der Standard-Linkname ist.pwd
Annäherung und etwas ging schief. Lassen Sie uns das auf einen ID-ten-T-Fehler zurückführenAbsolut:
(Vielleicht gut für die Allgemeinheit in Skripten) oder einfach
Verhältnismäßig:
Das Ausfüllen der Registerkarten hilft Ihnen bei der Eingabe.
Von grawitys Kommentar und http://lists.gnu.org/archive/html/coreutils-announce/2012-03/msg00000.html :
Also mit dieser Version:
sollte funktionieren (mit in der Praxis ist dein erstes Beispiel identisch mit dem Hinzufügen der
--relative
Schalter).quelle
ln -s -r foo ~/bar
.$(readlink -f .)
Über$PWD
?readlink -f
wird dann mit dem absoluten Zielpfad des aktuellen Verzeichnisses verknüpft, während$PWD
Wird symlink zu dem wörtlichen Verzeichnis, in dem man sich gerade befindet. Was gesucht wird, ist wahrscheinlich von Zeit zu Zeit unterschiedlich und in erster Linie wahrscheinlich überhaupt kein Problem.