Symlink и символ *

Автор Giorace, 22 октября 2013, 10:05:40

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Giorace

Приветствую. На хостинге стоит Deban 6.
Есть задача сделать симлинки на одну папку с нескольких сотен доменов.
По одному отлично работает
ln -s /var/www/user/data/folder/ /var/www/user/data/www/domain1.ru/
А все сразу сделать не получается.
ln -s /var/www/user/data/folder/ /var/www/user/data/www/*/
Причём непонятно почему, при выполнении второй команды берётся домен имя которого при сортировке по алфавиту в конце, например /var/www/user/data/www/zdomain.ru/ и в нём создаются симлинки на каждый домен вот так
domain1.ru >- /var/www/user/data/www/domain1.ru/
domain2.ru >- /var/www/user/data/www/domain2.ru/
domain3.ru >- /var/www/user/data/www/domain3.ru/
и.т.д.

Интересует, как всё-таки правильно создать симлинки с нескольких сотен папок на одну.

abqn

Здравствуйте!
Сообщество Debian очень дружелюбно, спешу это подтвердить (я увидел Ваш проект на одной из бирж).
Вы не совсем верно понимаете как работают «шаблоны».
Когда Вы используете «шаблон», на его место просто подставляются все возможные значения.
Пример.
mkdir /tmp/folder
mkdir -p /tmp/www/{domain.com,domain.ru,domain.net}

Если использовать команду:
ln -sv /tmp/folder/ /tmp/www/*/
то после раскрытия «шаблона» она примет следующий вид:
ln -sv /tmp/folder/ /tmp/www/domain.com/ /tmp/www/domain.net/ /tmp/www/domain.ru/
И соответствующий результат:
Цитировать«/tmp/www/domain.ru/folder» -> «/tmp/folder/»
«/tmp/www/domain.ru/domain.com» -> «/tmp/www/domain.com/»
«/tmp/www/domain.ru/domain.net» -> «/tmp/www/domain.net/»
То, что Вы хотите сделать, осуществляется через петли «loop».
Пример.
рм -рф /tmp/www
mkdir -p /tmp/www/{domain.com,domain.ru,domain.net}
for DOMAIN in /tmp/www/*/; do
ln -sv /tmp/folder/  "${DOMAIN}";
done


Цитировать+ ln -sv /tmp/folder/ /tmp/www/domain.com/
«/tmp/www/domain.com/folder» -> «/tmp/folder/»
+ for DOMAIN in '/tmp/www/*/'
+ ln -sv /tmp/folder/ /tmp/www/domain.net/
«/tmp/www/domain.net/folder» -> «/tmp/folder/»
+ for DOMAIN in '/tmp/www/*/'
+ ln -sv /tmp/folder/ /tmp/www/domain.ru/
«/tmp/www/domain.ru/folder» -> «/tmp/folder/»
Пожалуйста, ознакомьтесь с eval, set.
$ eval echo ln -sv /tmp/folder/ /tmp/www/*/
$ set -x