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?

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

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.


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.