Wir haben zwei Wege. Erstens ist Verzeichnis, zweitens entweder ein Verzeichnis oder eine Datei.
/a/b/c
und /a/d/e.txt
Der relative Pfad vom ersten zum zweiten Pfad ist:
../../d/e.txt
Wie berechnet man das im Linux-Terminal? Für diejenigen, die nach dem Anwendungsfall fragen, kann dies beispielsweise verwendet werden, um viele relative Symlinks zu erstellen.
linux
command-line
shell
path
techraf
quelle
quelle
Antworten:
Angenommen, GNU-Coreutils:
Für Symlinks
ln
hat sich vor kurzem die--relative
Option angeeignet.Für alles andere
realpath
unterstützt Optionen--relative-to=
und--relative-base=
.quelle
Für mich funktioniert diese Antwort (die einen Python-Oneliner verwendet) perfekt.
Unter Linux (Kubuntu 14.04) und Mac OSX erfolgreich getestet, benötigt Python 2.6.
quelle
Um nicht davon abzuhängen,
realpath
dass dies nicht konsequent verfügbar ist und die Abhängigkeiten zu minimieren, habe ich mir das einfallen lassen (mit etwas Hilfe aus dieser Antwort ):Erzeugt eine Subshell, um den gemeinsamen Teil beider Pfade zu finden. Vielleicht gefällt es dir - funktioniert bei mir.
quelle