Il faut faire attention ici: lorsque ls ou stat n'affiche pas de chemin absolu - le lien n'a pas de chemin absolu! C'est esp. important lorsque l'appareil est monté, par exemple dans un contexte différent (par exemple, si vous avez quelque chose sur un CD ou une clé USB ou essayez de récupérer un disque dur cassé). Toutes les solutions mentionnées (realpath, readlink, ....) ne montrent que le chemin absolu dans le contexte monté.
flolo
Réponses:
225
realpathn'est pas disponible sur toutes les saveurs Linux, mais readlinkdevrait l'être.
readlink -f symlinkName
Ce qui précède devrait faire l'affaire.
Sinon, si aucun des éléments ci-dessus n'est installé, vous pouvez effectuer les opérations suivantes si vous avez installé python 2.6 (ou version ultérieure)
man realpathmontre en bas qu'il fait partie de "GNU coreutils", qui, j'en suis sûr, est toujours disponible sur Ubuntu, donc même si @IanStapletonCordasco dit " realpathn'est pas disponible sur toutes les saveurs Linux", il devrait au moins être disponible sur tous Je crois que les saveurs dérivées d'Ubuntu et d'Ubuntu.
Gabriel Staples le
10
saveurs unix -> ll symLinkName
OSX -> readlink symLinkName
La différence est que la 1ère manière afficherait le chemin du lien symbolique de manière clignotante et la 2ème manière le ferait simplement en écho sur la console.
La question demandait spécifiquement le chemin complet / absolu, pas le chemin relatif (../../file.txt). Ces deux réponses donneront le chemin relatif.
wisbucky
3
Une autre façon de voir les informations est la statcommande qui affichera plus d'informations. Commande stat ~/.sshsur l'écran de ma machine
Vous pouvez utiliser awkavec un systemappel readlinkpour obtenir l'équivalent d'une lssortie avec des chemins de lien symbolique complets. Par exemple:
ls | awk '{printf("%s ->", $1); system("readlink -f " $1)}'
Je peux le faire sans readlink; juste utiliser ls -l. Cela ne fonctionne pas du tout non plus, essaie de le faire sur tout ce qui se trouve dans le répertoire (non-liens) et si votre ls est configuré pour utiliser des couleurs awk se brise complètement. il suffit d'utiliserfind . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'
Réponses:
realpath
n'est pas disponible sur toutes les saveurs Linux, maisreadlink
devrait l'être.Ce qui précède devrait faire l'affaire.
Sinon, si aucun des éléments ci-dessus n'est installé, vous pouvez effectuer les opérations suivantes si vous avez installé python 2.6 (ou version ultérieure)
la source
-f
indicateur et cela fonctionne. iereadlink symlinkName
realpath <path to the symlink file>
devrait faire l'affaire.la source
man realpath
montre en bas qu'il fait partie de "GNU coreutils", qui, j'en suis sûr, est toujours disponible sur Ubuntu, donc même si @IanStapletonCordasco dit "realpath
n'est pas disponible sur toutes les saveurs Linux", il devrait au moins être disponible sur tous Je crois que les saveurs dérivées d'Ubuntu et d'Ubuntu.saveurs unix ->
ll symLinkName
OSX ->
readlink symLinkName
La différence est que la 1ère manière afficherait le chemin du lien symbolique de manière clignotante et la 2ème manière le ferait simplement en écho sur la console.
la source
Une autre façon de voir les informations est la
stat
commande qui affichera plus d'informations. Commandestat ~/.ssh
sur l'écran de ma machineJ'espère que cela peut aider quelqu'un.
la source
Vous pouvez utiliser
awk
avec unsystem
appelreadlink
pour obtenir l'équivalent d'unels
sortie avec des chemins de lien symbolique complets. Par exemple:Affiche par exemple
la source
ls -l
. Cela ne fonctionne pas du tout non plus, essaie de le faire sur tout ce qui se trouve dans le répertoire (non-liens) et si votre ls est configuré pour utiliser des couleurs awk se brise complètement. il suffit d'utiliserfind . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'