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


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.