символическая ссылка на уже существующий каталог

12

Есть ли надлежащим образом связать /home/user/app/publicс /home/user/public_html, учитывая тот факт , что цель уже существует?

Если я это сделаю ln -s /home/user/app/public /home/user/public_html, я получу /home/user/public_html/public.

Я предполагаю, что было бы возможно также ln -s /home/user/public_html /home/user/app/publicизменить действие, такое как , однако я не уверен, как избежать /home/user/app/public/public_htmlкак конечный результат.

user2094178
источник

Ответы:

13

Позвольте мне правильно понять вашу проблему

Ваш источник, /home/user/public_htmlи я предполагаю, что там есть файлы. И вы хотите сделать ссылку на этот каталог прямо в /home/user/app/public. Таким образом, вы можете сделать что-то подобное ls /home/user/app/publicи увидеть файлы, которые существуют на /home/user/public_html.

Если это правильно, то ваш источник /home/user/public_htmlи цель /home/user/app/public. Правильная команда вот эта:

ln -s /home/user/public_html /home/user/app/public

Просто убедитесь, что /home/user/app/publicэто не правильный каталог или файл, предыдущий введите команду.

Lucio
источник
3
Это старый, но я думаю, что пользователь точно спросил, как делать то, что вы описываете, но, в случае, если / home / user / app / public уже может существовать (это именно то предостережение, которое вы упомянули в конце вашего ответ). Поэтому, IMHO, это не отвечает на первоначальный вопрос, так как пользователь хотел точно знать, как обращаться с уже существующей целью (т. Е. Как переопределить ее с помощью символической ссылки, без необходимости удалять ее перед созданием символической ссылки).
Jotadepicas
Попробуйте это -T вариант :)
Milkmannetje
2

Если я правильно понимаю ваш вопрос, вы хотели знать, как бороться с уже существующими целями. Если это так, есть два возможных сценария.

1) существующей целью является файл. Если это так, вы можете принудительно создать символическую ссылку с помощью "-f"

2) существующей целью является каталог. Если это так, то это зависит от вашей текущей реализации команды ln. Он может иметь доступный аргумент "-n", который заставляет символическую ссылку на каталоги обрабатываться правильно, а не дублировать их, как вы говорите.

Ссылка: /unix/207294/create-symlink-overwrite-if-one-exists

jotadepicas
источник
Интересно, почему downvote без комментариев: stackoverflow.com/help/privileges/vote-down
jotadepicas