Як я можу створити символічне посилання в Терміналі?


351

Яка команда використовується для створення символічного посилання / м'якого посилання?

Відповіді:


542
┌── 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) див. Сторінку man .

Шлях до симпосилання необов’язковий; якщо пропущено, 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, ти можеш дати мені підказку? намагаючись створити symlink для користувачів, щоб я міг використовувати його на іншому жорсткому диску, а ssd просто symlink. дякую
Ewoks

2
@patrix Я відредагував свою відповідь, щоб уточнити; не соромтесь редагувати далі.
гр

4
Факт забави: оригінал не потрібно насправді існувати. Команда ln -s "This directory is no longer in use" READMEбула б цілком законною, і тоді хтось, хто виконує ls -l, побачив повідомлення.
Едвард Фолк

1
Для подальшої довідки: Вам не потрібно рухатись / Користувачами на macOS, щоб заощадити місце. Ви можете змінити шляхи до домашнього каталогу користувачів окремо в Налаштуваннях системи в розділі Користувачі та групи, клацнувши правою кнопкою миші записи списку користувачів.
Пітер В.

73

Команда викликається ln. Якщо використовувати цей параметр, -sвін створить символічне посилання в поточному каталозі:

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

1
Чи повинен спочатку існувати пов'язаний файл? Я отримую файл не знайдено помилки на цілі.
AlxVallejo

2
Файл не (ви отримуєте повідомлення про помилку, якщо він є), але всі каталоги будь-якого шляху. Якщо ви застрягли, сміливо задайте нове запитання за допомогою кнопки Задати питання вгорі праворуч. Додайте посилання на це питання, щоб забезпечити контекст.
nohillside

Символічне посилання не повинно існувати до запуску цієї команди. Але наскільки я знаю, потрібний дійсний шлях. Якщо папка вихідного файлу не існує до запуску цієї команди, ви також отримаєте No such file or directoryпомилку.
Деніз Каплан

34

Я знаю, що це питання явно задає питання про термінал, але якщо ви перебуваєте в GUI Land і не хочете входити до терміналу, ви можете використовувати SymbolicLinker . Це ставить опцію "Зробити символічну посилання" в меню Служб у Finder.

Контекстне меню для папки із підменю "Послуги" із підсвічуванням "Зробити символічне посилання"

Контекстне меню для символічного посилання з увімкненим "Зробити символічне посилання"


3
Мені б хотілося знати, чому це було знято, тому я можу робити відповіді вищої якості з цього моменту :)
Ben Leggiero

10
ймовірно, тому, що питання було "Як я можу створити символічну посилання в Терміналі?" Але я не заперечую вас :)
vedrano

1
@EdwardFalk Я думаю, що в El Capitan ви можете утримувати Command+ Optionпід час перетягування файлу ... відповідь оновлять пізніше
Ben Leggiero

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 hahaha Мені подобається іноді переосмислювати. спростив мою відповідь!
Джеральд

@mylogon я щойно зрозумів, що .не працює на macOS. ще не спробував на Linux. використання ./призводило до цього, foo -> ./fooщо вказує на себе.
Джеральд

Яку повну команду ви набрали?
мілолог
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.