Para usar en un script de shell, estoy buscando una forma de línea de comandos para obtener el destino de un enlace simbólico. Lo más cerca que he llegado hasta ahora es stat -N src, qué salidas src -> dst. Por supuesto, podría analizar la salida y obtener dst, pero me pregunto si hay alguna forma directa de obtener el destino.
command-line
symlink
gerrit
fuente
fuente

readlink -fsi desea conocer el último objetivo del enlace simbólico y no solo el siguiente .-fes una extensión no portátil de GNUreadlink.En Mac OS X y FreeBSD / NetBSD / etc. sus:
Más genéricamente supongo que la solución es (stat --printf =% N usa comillas extrañas):
Ejemplo:
Otro método es:
La última línea está destrozada porque no tiene nueva línea, pero está bien si necesita el resultado en una variable, como así
Se
-maxdepthnecesita para evitarfinddescender a directorios sibresulta ser un directorio.fuente
stat --printf='%N\n'es exactamente lo que quiero, las citas extrañas no me molestan, sus mismas citas rm y lnlink -> desten la salida. La solución find (1) debe verificarse si es con GNU findutils o de lo contrario ...echo $fciertamente no produce lo que espera cuando el enlace simbólico apunta a/*(sí, es posible)Esto se puede hacer usando GNU
find:find src -prune -printf "%l\n".fuente
Portablemente: sin suerte, excepto el uso de heurística para analizar la salida ls -l, o usar
perl -le 'print readlink("some-file")'algunos sistemas tienen un
readlinkcomando, algunos con una-fopción para obtener la ruta absoluta.Hay varias implementaciones de un
statcomando como envoltorio para las llamadasstat/lstatsystem. El GNU uno no es útil en ese sentido, pero el incorporado de zsh lo es más:Aún con zsh, puede obtener la ruta absoluta de un archivo (elimina todos los componentes de enlace simbólico) con el
:Amodificador (se aplica a la expansión variable, la expansión del historial y el globbing:fuente
En un sistema donde no tengo
readlinko tengostatcomandos pero tengo Python 2.x, estoy usando un script corto:Tenga en cuenta que, a diferencia de
readlink -festo, solo puede seguir un nivel de enlace simbólico.fuente
Realpath portátil puro de Bash
fuente
realpathcomando delcoreutilspaquete,como se vincula en
readlinkla página del manual de comandos.por ejemplo:
salidas
en mi maquina
fuente