Crear un enlace simbólico de directorio en Ubuntu [cerrado]


247

A continuación se muestra mi código para crear un enlace simbólico de un directorio:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

Ya creé el directorio /etc/nginx. Solo quiero que el contenido del directorio de origen ( /usr/local/nginx/conf/) esté en el contenido del directorio de destino ( /etc/nginx). Pero cuando ejecuto el código, /etc/nginxcontiene un directorio llamado conf, en lugar del contenido deconf . Ese directorio contiene los contenidos que quiero, pero en la ubicación incorrecta.

¿Por qué puso un directorio en la carpeta de destino, en lugar de simplemente poner el contenido del directorio en la carpeta de destino?


También puede usar Archivos (navegador de archivos predeterminado). Haga clic derecho en la carpeta que desea vincular> opción "Hacer enlace". Creará una carpeta vinculada que puede mover y cambiar de nombre según lo necesite.
John Linhart

44
Use la bind mountfunción de Linux . ejemplo
gkiko

Respuestas:



30

Eso es lo que lnestá documentado cuando el destino ya existe y es un directorio. Si quieres /etc/nginxa ser un enlace simbólico en lugar de contener un enlace simbólico, es mejor que no hubiera crearlo como un directorio primero!


51
Su respuesta solo tiene sentido en el contexto del lector que ya sabe la respuesta. Es inútil para cualquiera que haga la pregunta
Ricardo Saporta,

1
¿Puedo realmente crear un enlace simbólico a una raíz de un dispositivo USB montado (por lo tanto, no puedo borrar esta carpeta primero)?
Grigory Kornilov

1
@GrigoryKornilov puedes crear un enlace simbólico a lo que quieras, incluido algo que no existe. Esta pregunta era más bien sobre el lugar donde se crea el enlace simbólico (no hacia dónde apunta). Un nombre de ruta particular en el sistema de archivos es un archivo normal o es un directorio o es un enlace simbólico (o es un socket o tubería o dispositivo). No puede ser más de una de esas cosas al mismo tiempo (es decir, no puede tener más de un archivo distinto con exactamente el mismo nombre).
Celada

10

En script es útil algo como esto:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

evita antes de volver a crear un enlace simbólico en bucle "malo" después de volver a ejecutar el script


1
¡Excelente! Esta es la solución exacta. no es necesario crear el directorio si ya existe. Es un muy buen ajuste al enlace duro y lo hunde en el agujero negro (/ dev / null)
Cosmo Arun
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.