Finden Sie heraus, welcher Pfad ohne Symlink wäre?

10

Gibt es unter Linux eine Möglichkeit, herauszufinden, wie der tatsächliche Pfad zu diesem Verzeichnis aussieht, wenn ich keinen symbolischen Link verwendet habe, um dorthin zu gelangen?

Erwägen:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5

Oder:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4 4
$ cd 4/5
$ pwd 
/home/dave/tmp/4/5

Gibt es eine Möglichkeit herauszufinden, dass / home / dave / tmp / 5 wirklich / home / dave / 1/2/3/4/5 ist?

David Mackintosh
quelle

Antworten:

13

Für die Verwendung mit cdverwenden pwd -P:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5
$ pwd -P
/home/dave/tmp/1/2/3/4/5

Verwenden Sie für generische symbolische Links readlink:

$ cd ..
$ readlink 5
1/2/3/4/5

Oder ls -l(mit -dfür Verzeichnisse):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5
jtbandes
quelle
Die Datei readlink -f gibt den nicht verknüpften Pfad zu dieser Datei zurück, was ich möchte. Vielen Dank!
David Mackintosh
1
huh, ich hatte immer / bin / pwd verwendet, da es nicht wissen kann, wie es dahin gekommen ist, wo es ist, im Gegensatz zu der eingebauten pwd-Shell. Offensichtlich äquivalent zu pwd -P.
Peter Cordes
ls -lda funktioniert aus irgendeinem Grund nicht für versteckte Sym-Links
Casebash
2

Sie möchten entweder readlink -f(in Coreutils, standardmäßig installiert) oder das leichter zu merkende realpath, das Sie installieren müssen.

Ryan C. Thompson
quelle
0

Eine alternative Methode, die ich verwendet habe,

cd to the symlink
Ctrl+Shift+T #To open a new tab
pwd

Neue Registerkarte pwd, gibt den Symlink. ;)

Lakshman Prasad
quelle
Es tut mir leid, welche Shell, welchen Fenstermanager oder welches Terminal verwenden Sie hier?
David Mackintosh
Ich denke, er spricht über Gnome-Terminal
Prestomation
Ja, ich habe über das Gnome-Terminal gesprochen.
Lakshman Prasad