¿Crear un enlace simbólico de una carpeta a otra con diferentes nombres?

81

Tengo dos carpetas, una de las cuales es la raíz de mi servidor web. Quiero vincularlo a mi carpeta de proyecto para poder mantener las cosas actualizadas con Git.

Si trato de hacer esto:

ln -s /home/user/project  /var/www/html

El sistema crea una carpeta llamada proyecto dentro de la carpeta html y la vincula. ¿Hay alguna forma de vincularlo para que el directorio 'html' apunte al contenido del proyecto ? ¿Tienen que ser el mismo nombre?

Nota : También necesito vincular varios archivos ocultos. ¿Puedo hacer esto usando ln?

usuario991710
fuente

Respuestas:

109

De man ln:

Por defecto, cada destino (nombre del nuevo enlace) no debería existir.

Como ya tiene un directorio llamado html, el enlace se creará dentro /var/www/htmlteniendo el nombre del objetivo, es decir project.

Si desea que un enlace simbólico /var/www/htmlapunte /home/user/project, no debe tener el directorio htmlpresente de antemano. Por lo tanto, solo debe tener /var/wwwy luego ejecutar lo siguiente creará el enlace simbólico deseado (no haga esto a menos que esté seguro):

ln -s /home/user/project /var/www/html

Aquí hay un ejemplo:

$ pwd
/home/user/test/askubuntu

$ ls -l
total 4
drwxrwxr-x 2 user user 4096 Mar 25 00:16 foo

$ ln -s /home/user/test/bar /home/user/test/askubuntu/foo

$ ls -l
total 4
drwxrwxr-x 2 user user 4096 Mar 25 00:17 foo

$ cd foo/
$ ls -l
total 0
lrwxrwxrwx 1 user user 25 Mar 25 00:17 bar -> /home/user/test/bar

$ cd ..
$ rm -r foo/

$ ls -l
total 0

$ ln -s /home/user/test/bar /home/user/test/askubuntu/foo

$ ls -l
total 0
lrwxrwxrwx 1 user user 25 Mar 25 00:18 foo -> /home/user/test/bar

Y sí, puedes crear enlaces simbólicos de archivos ocultos.

heemayl
fuente
13
Intenté esto, pero el enlace simbólico resultante fue un archivo y no un directorio
Alex
1
@Alex un enlace suave aparece como un archivo, pero el resultado es que se comporta como la carpeta a la que apuntaba.
Chanoch
55
También tenga en cuenta que el directorio de origen no debe ser una ruta relativa debe ser absoluta, por ln -s ./ /var/www/htmllo que no funcionará
Diego Andrés Díaz Espinoza
0

Asegúrese de que el directorio html no esté creado en /var/www/.

El comando entonces es: ln -s -T /home/user/project /var/www/html

Jivak Dhadse
fuente