Cuando estoy usando ls -la symlinkNameo stat symlinkNameno, se muestra toda la ruta (por ejemplo ../../../one/two/file.txt)
¿Cuál es el comando de Linux que revela la ruta completa?
Cuando estoy usando ls -la symlinkNameo stat symlinkNameno, se muestra toda la ruta (por ejemplo ../../../one/two/file.txt)
¿Cuál es el comando de Linux que revela la ruta completa?
Respuestas:
realpathno está disponible en todas las versiones de Linux, pero readlinkdebería estarlo.
readlink -f symlinkName
Lo anterior debería funcionar.
Alternativamente, si no tiene ninguno de los anteriores instalados, puede hacer lo siguiente si tiene instalado Python 2.6 (o posterior)
python -c 'import os.path; print(os.path.realpath("symlinkName"))'
-fbandera y entonces esto funciona. iereadlink symlinkName
realpath <path to the symlink file> debería hacer el truco.
man realpathmuestra en la parte inferior que forma parte de "GNU coreutils", que estoy bastante seguro de que siempre viene en Ubuntu, así que aunque @IanStapletonCordasco dice " realpathno está disponible en todos los sabores de Linux", al menos debería estar disponible en todos Sabores de Ubuntu y derivados de Ubuntu, creo.
sabores unix -> ll symLinkName
OSX -> readlink symLinkName
La diferencia es que la primera forma mostraría la ruta del enlace simbólico de forma intermitente y la segunda forma simplemente lo haría eco en la consola.
Otra forma de ver la información es el statcomando que mostrará más información. Comando stat ~/.sshen la pantalla de mi máquina
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: -
Espero que esto pueda ayudar a alguien.
Puede usar awkcon una systemllamada readlinkpara obtener el equivalente de una lssalida con rutas de enlace simbólicas completas. Por ejemplo:
ls | awk '{printf("%s ->", $1); system("readlink -f " $1)}'
Mostrará, por ejemplo,
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. Esto tampoco funciona en absoluto, intenta hacerlo en todo en el directorio (no enlaces) y si su ls está configurado para usar colores, awk se rompe por completo. solo usefind . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'