bash scripting: Wie finde ich den absoluten Pfad von "symlink / .."?

8

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 ...

auf

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.

    
dagnelies 07.06.2011, 15:35
quelle

6 Antworten

5

Versuchen Sie Folgendes:

%Vor%

oder vielleicht nur

%Vor%

Es ist unklar, ob Sie parent allein oder den vollständigen Pfad verwenden möchten.

    
jlliagre 07.06.2011, 16:24
quelle
1

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

    
Op De Cirkel 07.06.2011 16:22
quelle
1
%Vor%

Dies gibt Ihnen den absoluten Pfad des Verzeichnisses, in dem das Skript läuft.

    
PaulMurrayCbr 06.03.2013 05:28
quelle
0

Ich rufe meinen Skript mit dem folgenden Befehl an: ../script1 und hat einen relativen Aufruf von ../relative/script2

%Vor%

ist in script1

    
User 06.01.2014 19:52
quelle
0

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%     
imme 16.07.2015 15:10
quelle
-3

Was ist damit?

%Vor%     
patapizza 07.06.2011 16:07
quelle

Tags und Links