bash – Crear enlace simbólico: sobrescribir si existe

Pregunta:

Quiero tomar datos en /path/to/data/folder/month/date/hour/minute/file y vincularlos simbólicamente a /path/to/recent/file y hacer esto automáticamente cada vez que se crea un archivo.

Suponiendo que no sabré de antemano si existe /path/to/recent/file , ¿cómo puedo crearlo (si no existe) o reemplazarlo (si existe)? Estoy seguro de que puedo verificar si existe y luego eliminar el enlace simbólico, pero me pregunto si hay un comando simple que hará lo que quiero en un solo paso.

Respuesta:

Este es el propósito de la opción -f de ln : elimina los archivos de destino existentes, si los hay, antes de crear el enlace.

ln -sf /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file

creará el enlace simbólico /path/to/recent/file apuntando a /path/to/data/folder/month/date/hour/minute/file , reemplazando cualquier archivo existente o enlace simbólico a un archivo si es necesario (y funcionando bien si nada ya existe allí).

Si un directorio, o enlace simbólico a un directorio, ya existe con el nombre de destino, el enlace simbólico se creará dentro de él (por lo que terminaría con /path/to/recent/file/file en el ejemplo anterior). La opción -n , disponible en algunas versiones de ln , se encargará de los enlaces simbólicos a los directorios, reemplazándolos según sea necesario:

ln -sfn /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file

POSIX ln no especifica -n por lo que no puede confiar en él en general. Gran parte del comportamiento de ln está definido por la implementación, por lo que realmente necesita verificar las especificaciones del sistema que está utilizando. Si está usando GNU ln , también puede usar las opciones -t y -T , para que su comportamiento sea completamente predecible en presencia de directorios ( es decir, fallar en lugar de crear el enlace dentro del directorio existente con el mismo nombre).

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım