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


Ответы:


543
┌── ln(1) link, ln -- make links
   ┌── Create a symbolic link.
                            ┌── the optional path to the intended symlink
                               if omitted, symlink is in . named as destination
                               can use . or ~ or other relative paths
                      ┌─────┴────────┐
ln -s /path/to/original /path/to/symlink
      └───────┬───────┘
              └── the path to the original file/folder
                  can use . or ~ or other relative paths
$ echo content > original
$ ln -s original symlink
$ ls -la original symlink
-rw-r--r--  1 grgarside  staff    8 28 Jan 18:44 original
lrwxr-xr-x  1 grgarside  staff    8 28 Jan 18:44 symlink -> original
$ cat symlink
content

Для получения дополнительной информации о ln (1) см. Справочную страницу .

Путь к символической ссылке не является обязательным; если опущено, по lnумолчанию создается ссылка с тем же именем, что и место назначения, в текущем каталоге:

$ cd ~/Documents
$ ln -s ../Pictures
$ ls -l Pictures
lrwxr-xr-x  1 user  staff  11 Feb  1 17:05 Pictures -> ../Pictures

Чтобы создать символическую ссылку для замены системного каталога (например, если вы хотите /Usersуказывать на другой диск), вам необходимо отключить защиту целостности системы . Вы можете снова включить его после настройки символической ссылки.


63
Если бы только справочные страницы были так же ясны, как и ваш ответ!
Адриан Линч

разрешение отказано: S вы можете дать мне подсказку? пытаясь создать символическую ссылку для пользователей, чтобы я мог использовать ее на другом жестком диске, а ssd имеет только символическую ссылку. спасибо
Ewoks

2
@patrix Я отредактировал свой ответ, чтобы уточнить; не стесняйтесь редактировать дальше.
grg

4
Интересный факт: оригинал не должен существовать. Команда ln -s "This directory is no longer in use" READMEбыла бы совершенно законной, и тогда любой выполняющий ls -lувидит сообщение.
Эдвард Фальк

1
Для дальнейшего использования: вам не нужно перемещать / Users в macOS для экономии места. Вы можете изменить пути к домашним каталогам пользователей по отдельности в Системных настройках в разделе «Пользователи и группы», щелкнув правой кнопкой мыши записи списка пользователей.
Питер В.

73

Команда называется ln. При использовании с опцией -sон создаст символическую ссылку в текущем каталоге:

ln -s /any/file/on/the/disk linked-file

1
Должен ли сначала существовать связанный файл? Я получаю файл не найден ошибка на цели.
AlxVallejo

2
Файл не (вы получите сообщение об ошибке, если оно есть), но все каталоги в любом пути. Если вы застряли, не стесняйтесь задавать новый вопрос, используя кнопку Задать вопрос в правом верхнем углу. Включите ссылку на этот вопрос, чтобы обеспечить контекст.
холме

Символическая ссылка не должна существовать до запуска этой команды. Но правильный путь требуется, насколько я знаю. Если папка выходного файла не существует до запуска этой команды, вы также получите сообщение No such file or directoryоб ошибке.
Дениз Каплан

34

Я знаю, что этот вопрос явно задает вопрос о Терминале, но если вы находитесь в Земле графического интерфейса и не хотите входить в Терминал Земли, вы можете использовать SymbolicLinker . Это добавляет параметр «Создать символическую ссылку» в меню «Сервисы» в Finder.

Контекстное меню для папки с подменю «Службы» с подсвеченным «Сделать символическую ссылку»

Контекстное меню для символической ссылки с выделенной подсветкой «Сделать символическую ссылку»


3
Я хотел бы знать, почему за это проголосовали, так что теперь я могу делать более качественные ответы :)
Бен Легжеро,

10
вероятно, потому что вопрос был "Как я могу создать символическую ссылку в Терминале?" Но я не буду принижать тебя :)
vedrano

1
@ EdwardFalk Я думаю, что в El Capitan, вы можете удерживать Command+ Optionво время перетаскивания файла ...
обновлю

1
@BenLeggiero Это делает псевдоним.
Энди Стюарт

2
@BenLeggerio, Разница объясняется здесь: apple.stackexchange.com/questions/2991/…
MiB


5

ln -s /some/dir/ ~/Desktop/dir

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

ln -s "$(pwd)" ~/Desktop/dir

Чтобы создать символическую ссылку на текущий каталог, вы находитесь в.


2
Простая .(точка) даст pwd. Не нужно никаких причудливых аргументов :)
mylogon

@ mylogon хахаха, мне нравится иногда задумываться. упростили мой ответ!
Джеральд

@ mylogon Я только что понял, что .не работает на MacOS. еще не попробовал Linux. использование ./привело к тому, foo -> ./fooчто указывает на себя.
Джеральд

Какую полную команду вы набрали?
Милогон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.