Gegeben zwei Dateien:
%Vor% Beim Aufruf von parent/scripts/hello.sh
von einem beliebigen Ort möchte ich (im Skript) den vollständigen Pfad des übergeordneten Verzeichnisses finden. In diesem Fall parent
.
Das Hauptproblem ist, dass sich parent/scripts/..
auf generic
in Unix bezieht. Auf der anderen Seite ist alles, was mit Regexes zu tun hat, nicht generisch und kann fehleranfällig sein.
Lösungen, die nicht funktionieren:
%Vor% All diese werden wegen der symbolischen Verbindung auf generic
und nicht auf parent
zeigen.
Alles, was reguläre Ausdrücke betrifft, ist nicht anpassungsfähig / generisch, kann für komplexere Pfade fehlschlagen. Es könnte andere ..
und symbolische Links im Pfad geben, du willst das grand-parent, es ist ein Verzeichnisname mit ..
, du rufst es über $ PATH ...
Außerdem möchte ich es auf jeden Fall funktionieren, auch wenn es per $PATH
aufgerufen wird.
Jede einfache sichere Lösung für dieses einfache Problem? Ich meine, dass es nur das Eltern-Verzeichnis bekommt!
Was ich benutzt habe:
%Vor%Weiß nicht, ob es perfekt ist, aber es scheint sich wie erwartet zu verhalten.
würde ich empfehlen
1) benutze pwd -P
, was dir immer den physischen Pfad gibt, und dann mit dem relativen Pfad zum anderen Ort navigieren Das ist am sichersten.
2) benutze pwd -L
Dies gibt Ihnen den absoluten Pfad des Verzeichnisses, in dem das Skript läuft.
in bash könntest du einige String-Manipulation auf $PWD
wenn diese Variable machen ist verfügbar.
Verwenden Sie für Pfadname des übergeordneten Verzeichnisses:
%Vor%Weitere Beispiele:
%Vor%