Descobrir qual caminho não-symlink seria?

10

No Linux, se eu já fiz um cd e já estou em um diretório, existe uma maneira de descobrir qual é o caminho real para esse diretório se eu não tivesse usado um link simbólico para chegar lá?

Considere:

$ 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

Ou:

$ 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

Existe alguma maneira de descobrir que / home / dave / tmp / 5 é realmente / home / dave / 1/2/3/4/5?

    
por David Mackintosh 24.07.2009 / 19:07

3 respostas

13

Para uso com 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 links simbólicos genéricos, use readlink :

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

Ou ls -l (com -d para diretórios):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5
    
por 24.07.2009 / 19:12
2

Você quer readlink -f (em coreutils, instalado por padrão) ou o mais facilmente lembrado realpath , que você precisa instalar.

    
por 11.04.2010 / 18:45
0

Um método alternativo que usei

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

Nova guia pwd, dá o link simbólico. ;)

    
por 22.08.2009 / 11:10