Назад | Перейти на главную страницу

Создание массивных символических ссылок с использованием цикла for в bash

Мне просто интересно, можно ли создать огромное количество символических ссылок с помощью цикла for?

Например, у меня в каталоге / tmp много каталогов (я знаю, что не рекомендуется), и я не хочу их перемещать.

Вместо этого я просто хочу, чтобы они были в моем корневом каталоге, используя символические ссылки.

Вот что я сделал, но, к сожалению, совсем не работает:

for directories in /tmp/; do ln -s /tmp/$directories /$directories; done

Так что, если бы кто-нибудь мог мне намекнуть, было бы замечательно ;-) Спасибо.

Попробуй это.

cd /tmp && for i in `ls `; do ln -s $i /$i; done

Хорошо, работа выполнена, спасибо всем за подсказки.

Вот мое простое решение:

 for i in $(ls); do dir=$i; ln -s /tmp/$dir /$dir; done

Et voila: D

Еще раз спасибо сообществу StackExchange ;-)

Следующий блок создаст ссылки, как вы объяснили.

Если вы хотите отфильтровать некоторые имена из / tmp; использовать -name переключатель для поиска.

Если вам нужна большая глубина символьной ссылки, настройте / удалите -maxdepth переключатель

cd / 
find /tmp/ -maxdepth 1 -type d -exec ln -s {} \;

Чтобы сделать эти ссылки, вам нужны разрешения на запись в /

for directories in `find /tmp/ -type d`
do
  ln -s /tmp/$directories /$directories;
done

У вас должны быть права на запись в каталог, в котором вы хотите создать символическую ссылку. Имейте в виду, что / tmp (обычно) очищается при загрузке и может периодически очищаться в течение всего времени безотказной работы машины, поэтому полагаться на вещи, постоянно находящиеся в / tmp, рано или поздно вас укусит.