Découvrez quel chemin non-lien symbolique serait?

10

Sous Linux, si j'ai fait un cd et que je suis maintenant dans un répertoire, y a-t-il un moyen de savoir quel est le vrai chemin vers ce répertoire si je n'avais pas utilisé de lien symbolique pour y arriver?

Considérer:

$ 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-t-il un moyen de comprendre que / home / dave / tmp / 5 est vraiment / home / dave / 1/2/3/4/5?

David Mackintosh
la source

Réponses:

13

Pour une utilisation avec cd, utilisez 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

Pour les liens symboliques génériques, utilisez readlink:

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

Ou ls -l(avec -dpour les répertoires):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5
jtbandes
la source
readlink -f file renvoie le chemin non lié à ce fichier, ce que je veux. Merci!
David Mackintosh
1
hein, j'avais toujours utilisé / bin / pwd, car il ne peut pas savoir comment il est arrivé là où il se trouve, contrairement au shell pwd intégré. Évidemment équivalent à pwd -P.
Peter Cordes,
ls -lda ne fonctionne pas pour les liens sym cachés pour une raison quelconque
Casebash
2

Vous voulez soit readlink -f(dans coreutils, installé par défaut) ou le plus facile à mémoriser realpath, que vous devez installer.

Ryan C. Thompson
la source
0

Une méthode alternative que j'ai utilisée,

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

Nouvel onglet pwd, donne le lien symbolique. ;)

Lakshman Prasad
la source
Je suis désolé, quel shell, gestionnaire de fenêtres ou terminal utilisez-vous ici?
David Mackintosh
Je pense qu'il parle de gnome-terminal
prestomation
Oui, je parlais du terminal Gnome.
Lakshman Prasad