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?

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

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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.