Создание символической ссылки из одной папки в другую с разными именами?

81

У меня есть две папки, одна из которых - мой корень веб-сервера. Я хочу связать его с папкой моего проекта, чтобы я мог постоянно обновлять Git.

Если я попытаюсь сделать это:

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

Система создает папку с именем project в папке html и связывает ее. Есть ли способ связать его так, чтобы каталог html указывал на содержимое проекта ? Должны ли они быть одинаковыми?

Примечание : мне также нужно связать несколько скрытых файлов. Могу ли я сделать это с помощью ln?

user991710
источник

Ответы:

109

От man ln:

По умолчанию каждый пункт назначения (имя новой ссылки) еще не должен существовать.

Как у вас уже есть каталог с именем html, ссылка будет создана внутри , /var/www/htmlимеющее имя целевого т.е. project.

Если вы хотите, чтобы символическая ссылка /var/www/htmlуказывала на /home/user/projectвас, вам не следует htmlзаранее указывать каталог . Таким образом, вы должны только иметь /var/wwwи затем запустить следующее создаст желаемую символическую ссылку (не делайте этого, если вы не уверены):

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

Вот пример:

$ 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

И да, вы можете создавать символические ссылки скрытых файлов.

heemayl
источник
13
Я попробовал это, но полученная символическая ссылка была файлом, а не каталогом
Alex
1
@ Алекс мягкая ссылка выглядит как файл, но в результате он ведет себя как папка, на которую он указывал.
Ханох
5
Также обратите внимание, что исходный каталог не должен быть относительным путем, должен быть абсолютным, поэтому ln -s ./ /var/www/htmlне будет работать
Диего Андрес Диас Эспиноза
0

Убедитесь, что каталог html не создан в /var/www/.

Команда тогда: ln -s -T /home/user/project /var/www/html

Дживак Дхадсе
источник