Estoy trabajando en un sistema HP-UX y quiero saber si hay algún enlace simbólico circular.
Hasta ahora estoy usando el comando:
ls -lrt `find ./ -follow -type l`
Pero solo está haciendo ls -lrt en el directorio actual como resultado.
¿Qué comando debo usar para encontrar todos los enlaces simbólicos circulares en un sistema?
unix
find
symbolic-link
hp-ux
Vladimir
fuente
fuente
find
comando simplemente imprime.
o no imprime nada (por lo que solo está ejecutandols -lrt
ols -lrt .
) No sabe lo suficiente sobre HP-UXfind
para decirle cómo solucionar esto (¿tal vez requiere un explícito-print
? ) 2) ¿Qué quieres decir con "circular"?./a -> ./b
y./b -> ./a
? ¿Qué hay de/home/foo/a -> /home
? O/home/foo/a -> /home/bar
y/home/bar/b -> /home/foo
?-follow
realmente me da algunos enlaces reales son resultados?-follow
,find
examina el enlace en sí, no el archivo al que apunta. Porfind . -type l
lo tanto, imprime cosas que son enlaces (porque lo son-type l
) sin siquiera mirar para ver a qué apuntan (que serían archivos o directorios u otros enlaces que apuntan a archivos o directorios).Respuestas:
La página de manual de GNU find dice que todos los hallazgos POSIX deben detectar bucles del sistema de archivos y emitir mensajes de error en estos casos, y he probado
en GNU find, que pudo encontrar bucles del formulario
./a -> ./b
e./b -> ./a
imprimir el error(esto también funcionó
a->b->c->a
)Asimismo, los bucles del formulario
./foo/x -> ..
y./foo/a -> ./bar
+./bar/b -> ./foo
imprimieron los erroresSi desea hacer algo con la salida que no sea leerlo, necesitaría redirigirlo de stderr a stdout y canalizarlo a algún script que pueda analizar los mensajes de error.
fuente
-follow
, sí.ls
lugar de obtener enlaces reales cuando no se usa-follow
?ls
comando usando la salida de tufind
comando. Sufind
comando no imprimió nada, por lo que su shell se ejecutóls
sin nada, que enumera el directorio actual.