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

Я хочу создать символическую ссылку в корневую папку (/) в моем домашнем каталоге. Однако, если я попробую это, я получаю

~$ ln -s / ln: failed to create symbolic link './': File exists

Я могу сделать это, используя Nautilus Ctrl + D, конечно, поэтому я знаю, что это возможно.

Как это сделать, используя терминал?

13
задан 14 December 2017 в 04:03

3 ответа

Вам не хватает имени ссылки, это должно быть:

cd ~
ln -s / root

Что тогда создаст символическую ссылку с именем root в вашем домашнем каталоге. Поэтому правильное использование:

ln -s <target> <link-name>

Сообщение об ошибке, которое вы видите, что ./ всегда существует, и ссылка не может быть создана с этим именем, лучше всего использовать команду ln command2 с

Из команды ln :

СИНТАКСИС
(1st form) ln [OPTION]... [-T] TARGET LINK_NAME  
(2nd form) ln [OPTION]... TARGET  
(3rd form) ln [OPTION]... TARGET... DIRECTORY  
(4th form) ln [OPTION]... -t DIRECTORY TARGET...  
ОПИСАНИЕ В 1-й форме создайте ссылку на TARGET с именем LINK_NAME. Во второй форме создайте ссылку на TARGET в текущем каталоге. В 3-й и 4-й формах создайте ссылки на каждый TARGET в DIRECTORY. Создавайте жесткие ссылки по умолчанию, символические ссылки с --symbolic. По умолчанию каждый получатель (имя новой ссылки) еще не должен существовать4. При создании жестких ссылок каждый TARGET должен существовать. Символические ссылки могут содержать произвольный текст; если впоследствии разрешено, относительная ссылка интерпретируется относительно ее родительского каталога. Обязательные аргументы для длинных опций также обязательны для коротких опций. ОПЦИИ

Окончательный параметр <link-name> по умолчанию относится к последней части цели. Поэтому, когда целью является /path/dir, имя ссылки по умолчанию будет dir, если не указано. 2 И если вы, например, создаете ~/etc с mkdir ~/etc, а затем запустите ln -s /etc в [ f21] он не может создать ссылку, потому что имя / каталог уже существует.

И вы можете увидеть ссылку, созданную в вашем домашнем каталоге (здесь, например, вы, конечно, можете называть ее вам нравится):

$ ls -l ~/root
lrwxrwxrwx 1 videonauth videonauth 1 Dez 14 00:28 root -> /

3 Благодаря @thomasrutter для указания этого. 2 См. Также man link и man symlink 3 Благодаря @steeldriver для предоставления примера в комментариях. 4 Подчеркнутая часть, чтобы указать текст, поскольку он имеет отношение к вопросу.

16
ответ дан 22 May 2018 в 17:01
  • 1
    мое единственное оставшееся сомнение в том, почему команда, подобная ln -s /etc, работает, но не эта? Спасибо за ответ, – Ankur S 14 December 2017 в 03:35
  • 2
    Он создается потому, что имеет имя каталога, / может быть root или может быть компонентом пути, поэтому программа не может знать, что теперь подразумевается. /etc является просто явным различимым путем. – Videonauth 14 December 2017 в 03:37
  • 3
    @AnkurSonawane, потому что ./ будет всегда существует - ./etc не так вероятно. Сначала попробуйте mkdir etc, а затем ln -s /etc - вы также получите File exists – steeldriver 14 December 2017 в 03:37
  • 4
    Окончательный параметр, имя ссылки, по умолчанию относится к последней части цели, если ее опущено. Поэтому, когда целью является /some/dir, имя ссылки по умолчанию будет dir, если не указано. Однако, когда цель только /, это не сработает. – thomasrutter 14 December 2017 в 03:50
  • 5
    Я не чувствую, что это чрезвычайно важное, но объяснение @steeldriver звучит более разумно, учитывая выход File Exists. Не то, чтобы это имело значение, так как это вырожденный случай – Ankur S 14 December 2017 в 03:56

Вам не хватает имени ссылки, это должно быть:

cd ~ ln -s / root

Что тогда создаст символическую ссылку с именем root в вашем домашнем каталоге. Поэтому правильное использование:

ln -s <target> <link-name>

Сообщение об ошибке, которое вы видите, что ./ всегда существует, и ссылка не может быть создана с этим именем, лучше всего использовать команду ln command2 с

Из команды ln :

СИНТАКСИС (1st form) ln [OPTION]... [-T] TARGET LINK_NAME (2nd form) ln [OPTION]... TARGET (3rd form) ln [OPTION]... TARGET... DIRECTORY (4th form) ln [OPTION]... -t DIRECTORY TARGET... ОПИСАНИЕ В 1-й форме создайте ссылку на TARGET с именем LINK_NAME. Во второй форме создайте ссылку на TARGET в текущем каталоге. В 3-й и 4-й формах создайте ссылки на каждый TARGET в DIRECTORY. Создавайте жесткие ссылки по умолчанию, символические ссылки с --symbolic. По умолчанию каждый получатель (имя новой ссылки) еще не должен существовать4. При создании жестких ссылок каждый TARGET должен существовать. Символические ссылки могут содержать произвольный текст; если впоследствии разрешено, относительная ссылка интерпретируется относительно ее родительского каталога. Обязательные аргументы для длинных опций также обязательны для коротких опций. ОПЦИИ

Окончательный параметр <link-name> по умолчанию относится к последней части цели. Поэтому, когда целью является /path/dir, имя ссылки по умолчанию будет dir, если не указано. [D4] 2 И если вы, например, создаете ~/etc с mkdir ~/etc, а затем запустите ln -s /etc в ~ он не может создать ссылку, потому что имя / каталог уже существует.

И вы можете увидеть ссылку, созданную в вашем домашнем каталоге (здесь, например, вы, конечно, можете называть ее вам нравится):

$ ls -l ~/root lrwxrwxrwx 1 videonauth videonauth 1 Dez 14 00:28 root -> /

3 Благодаря @thomasrutter для указания этого. 2 См. Также man link и man symlink 3 Благодаря @steeldriver для предоставления примера в комментариях. 4 Подчеркнутая часть, чтобы указать текст, поскольку он имеет отношение к вопросу.

16
ответ дан 18 July 2018 в 01:14

Вам не хватает имени ссылки, это должно быть:

cd ~ ln -s / root

Что тогда создаст символическую ссылку с именем root в вашем домашнем каталоге. Поэтому правильное использование:

ln -s <target> <link-name>

Сообщение об ошибке, которое вы видите, что ./ всегда существует, и ссылка не может быть создана с этим именем, лучше всего использовать команду ln command2 с

Из команды ln :

СИНТАКСИС (1st form) ln [OPTION]... [-T] TARGET LINK_NAME (2nd form) ln [OPTION]... TARGET (3rd form) ln [OPTION]... TARGET... DIRECTORY (4th form) ln [OPTION]... -t DIRECTORY TARGET... ОПИСАНИЕ В 1-й форме создайте ссылку на TARGET с именем LINK_NAME. Во второй форме создайте ссылку на TARGET в текущем каталоге. В 3-й и 4-й формах создайте ссылки на каждый TARGET в DIRECTORY. Создавайте жесткие ссылки по умолчанию, символические ссылки с --symbolic. По умолчанию каждый получатель (имя новой ссылки) еще не должен существовать4. При создании жестких ссылок каждый TARGET должен существовать. Символические ссылки могут содержать произвольный текст; если впоследствии разрешено, относительная ссылка интерпретируется относительно ее родительского каталога. Обязательные аргументы для длинных опций также обязательны для коротких опций. ОПЦИИ

Окончательный параметр <link-name> по умолчанию относится к последней части цели. Поэтому, когда целью является /path/dir, имя ссылки по умолчанию будет dir, если не указано. [D4] 2 И если вы, например, создаете ~/etc с mkdir ~/etc, а затем запустите ln -s /etc в ~ он не может создать ссылку, потому что имя / каталог уже существует.

И вы можете увидеть ссылку, созданную в вашем домашнем каталоге (здесь, например, вы, конечно, можете называть ее вам нравится):

$ ls -l ~/root lrwxrwxrwx 1 videonauth videonauth 1 Dez 14 00:28 root -> /

3 Благодаря @thomasrutter для указания этого. 2 См. Также man link и man symlink 3 Благодаря @steeldriver для предоставления примера в комментариях. 4 Подчеркнутая часть, чтобы указать текст, поскольку он имеет отношение к вопросу.

16
ответ дан 24 July 2018 в 17:21

Другие вопросы по тегам:

Похожие вопросы: