¿Descubrir cuál sería la ruta sin enlace simbólico?

10

En Linux, si he hecho un CD y ahora estoy en un directorio, ¿hay alguna forma de averiguar cuál es la ruta real a ese directorio si no hubiera usado un enlace simbólico para llegar allí?

Considerar:

$ 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

O:

$ 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

¿Hay alguna forma de descubrir que / home / dave / tmp / 5 es realmente / home / dave / 1/2/3/4/5?

David Mackintosh
fuente

Respuestas:

13

Para usar con cd, use 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

Para enlaces simbólicos genéricos, use readlink:

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

O ls -l(con -dpara directorios):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5
jtbandes
fuente
El archivo readlink -f devuelve la ruta sin enlace simbólico a ese archivo, que es lo que quiero. ¡Gracias!
David Mackintosh
1
eh, siempre he usado / bin / pwd, ya que no puede saber cómo llegó a donde está, a diferencia de la shell pwd incorporada. Obviamente equivalente a pwd -P.
Peter Cordes
ls -lda no funciona para enlaces sym ocultas por alguna razón
Casebash
2

Desea readlink -f(en coreutils, instalado por defecto) o el más fácil de recordar realpath, que debe instalar.

Ryan C. Thompson
fuente
0

Un método alternativo que utilicé,

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

Nueva pestaña pwd, da el enlace simbólico. ;)

Lakshman Prasad
fuente
Lo siento, ¿qué shell, gestor de ventanas o terminal estás usando aquí?
David Mackintosh
Creo que está hablando de gnome-terminal
prestomation
Sí, estaba hablando de la Terminal Gnome.
Lakshman Prasad