Как создать символическую ссылку для директории

Вопрос или проблема

Я пытаюсь создать символическую ссылку, как ниже:

ln -s /home/scripts/logs /home/log 

Директория /home/log уже существует и не может быть удалена. Когда я это делаю, создается символическая ссылка /home/log/logs. Я знаю, что если цель — это директория и она уже существует, то ln -s создаст подпапку исходного элемента внутри целевой директории. Но я просто хочу, чтобы содержимое моей исходной директории /home/scripts/logs/test_contents оказалось в целевой /home/log/test_contents.

Есть ли какое-то решение для этого?

Примечание: я не могу удалить /home/logs, которая содержит логи других приложений.

У вас команда ln -s записана в обратном порядке. Первый операнд — это то, куда вы хотите, чтобы ссылка указывала, а второй — это то, как вы хотите назвать саму символическую ссылку.

Вы можете запомнить порядок операндов с помощью команды ln -s это тут и читать это как “Возьми это и создай для него символическую ссылку здесь” (как mv это тут — “Возьми это и перемести сюда“, и т.д.)

Команда

ln -s /home/logs /home/scripts/logs

создаст символическую ссылку /home/scripts/logs, указывающую на /home/logs (при условии, что /home/scripts/logs ещё не существует).

На практике, вы, вероятно, работаете не с директориями непосредственно под /home, поэтому скорее всего вы хотите это:

ln -s "$HOME/logs" "$HOME/scripts/logs"

… или что-то подобное.

Кажется, вы хотите создать символическую ссылку на файлы в вашей директории, а не на саму директорию. Тогда вам, вероятно, нужно это:

ln -s /home/scripts/logs/* /home/log/

Ответ или решение

Для создания символической ссылки на содержимое директории, а не на саму директорию, вам нужно использовать специальный подход. Давайте рассмотрим, как это сделать.

В вашем случае, вы хотите сделать так, чтобы содержимое директории /home/scripts/logs оказалось в директории /home/log, но не создавая при этом подкаталог logs. Поскольку вы не можете удалить уже существующую директорию /home/log, вам следует использовать следующий метод.

  1. Создайте папку для хранения содержимого: Если ваша цель состоит в том, чтобы содержимое /home/scripts/logs отображалось в /home/log, но при этом вы не хотите создавать подкаталог logs, то используйте следующую команду для создания символических ссылок на файлы внутри директории logs.

    Вы можете использовать команду ln -s с использованием подстановки *, чтобы создать символические ссылки на все файлы в источнике:

    ln -s /home/scripts/logs/* /home/log/

    Эта команда создаст символические ссылки на каждый файл внутри директории /home/scripts/logs в директории /home/log. Таким образом, содержимое /home/scripts/logs будет доступно в /home/log без создания дополнительных подкаталогов.

  2. Обратите внимание на наличие файлов: Убедитесь, что в директории /home/scripts/logs действительно есть файлы, иначе ссылка не будет создана. Также убедитесь, что файлы не имеют одноименных файлов в директории /home/log, чтобы избежать конфликтов.

  3. Проверка результата: После выполнения команды проверьте содержимое директории /home/log, чтобы убедиться, что все файлы теперь представлены в виде символических ссылок.

Таким образом, у вас будет доступ к файлам из /home/scripts/logs в директории /home/log, без необходимости удаления или изменения существующего дерева каталогов.

Оцените материал
Добавить комментарий

Капча загружается...