Descobrir qual seria o caminho sem link simbólico?

10

No Linux, se eu já encontrei um CD e agora 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á?

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

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?

David Mackintosh
fonte

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 -dpara diretórios):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5
jtbandes
fonte
O arquivo readlink -f retorna o caminho não vinculado a esse arquivo, que é o que eu quero. Obrigado!
27411 David Mackintosh
1
huh, eu sempre usei / bin / pwd, pois ele não sabe como chegou onde está, ao contrário do shell pwd incorporado. Obviamente equivalente a pwd -P.
Peter Cordes
ls -lda não funciona para ligações sym escondidas por algum motivo
Casebash
2

Você quer readlink -f(no coreutils, instalado por padrão) ou o mais fácil de lembrar realpath, que precisa instalar.

Ryan C. Thompson
fonte
0

Um método alternativo que eu usei,

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

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

Lakshman Prasad
fonte
Sinto muito, qual shell, gerenciador de janelas ou terminal você está usando aqui?
David Mackintosh
Acho que ele está falando sobre gnome-terminal
prestomation
Sim, eu estava falando sobre o Terminal Gnome.
Lakshman Prasad