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.