Quand j'utilise ls -la symlinkName
ou stat symlinkName
pas tout le chemin est affiché (par exemple ../../../one/two/file.txt
)
Quelle est la commande linux qui révèle le chemin complet?
Quand j'utilise ls -la symlinkName
ou stat symlinkName
pas tout le chemin est affiché (par exemple ../../../one/two/file.txt
)
Quelle est la commande linux qui révèle le chemin complet?
Réponses:
realpath
n'est pas disponible sur toutes les saveurs Linux, mais readlink
devrait 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)
python -c 'import os.path; print(os.path.realpath("symlinkName"))'
-f
indicateur et cela fonctionne. iereadlink symlinkName
realpath <path to the symlink file>
devrait faire l'affaire.
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.
Une autre façon de voir les informations est la stat
commande qui affichera plus d'informations. Commande stat ~/.ssh
sur l'écran de ma machine
File: ‘/home/sumon/.ssh’ -> ‘/home/sumon/ssh-keys/.ssh.personal’
Size: 34 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 25297409 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/ sumon) Gid: ( 1000/ sumon)
Access: 2017-09-26 16:41:18.985423932 +0600
Modify: 2017-09-25 15:48:07.880104043 +0600
Change: 2017-09-25 15:48:07.880104043 +0600
Birth: -
J'espère que cela peut aider quelqu'un.
Vous pouvez utiliser awk
avec un system
appel readlink
pour obtenir l'équivalent d'une ls
sortie avec des chemins de lien symbolique complets. Par exemple:
ls | awk '{printf("%s ->", $1); system("readlink -f " $1)}'
Affiche par exemple
thin_repair ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_restore ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_rmap ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_trim ->/home/user/workspace/boot/usr/bin/pdata_tools
touch ->/home/user/workspace/boot/usr/bin/busybox
true ->/home/user/workspace/boot/usr/bin/busybox
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}'