Створіть символічне посилання каталогу в Ubuntu [закрито]


247

Нижче наведено мій код для створення символьної посилання каталогу:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

Я вже створив каталог /etc/nginx. Я просто хочу, щоб вміст вихідного каталогу ( /usr/local/nginx/conf/) знаходився у вмісті цільового каталогу ( /etc/nginx). Але коли я виконую код , замість вмісту /etc/nginxвміщується каталог, який називається conf, а не вміст conf. Цей каталог містить потрібний мені вміст, але в неправильному розташуванні.

Чому він помістив каталог у цільову папку, а не просто вмістити каталог у цільову папку?


Ви також можете використовувати Файли (браузер файлів за замовчуванням). Клацніть правою кнопкою миші на папку, яку ви хочете пов’язати, а потім виберіть пункт "Зробити посилання". Це створить пов'язану папку, яку ви можете переміщати та перейменовувати у міру необхідності.
Джон Лінхарт

4
Використовуйте bind mountфункцію linux . приклад
gkiko

Відповіді:


254

Така поведінка, lnякщо другий аргумент - це каталог. Він розміщує посилання на перший аргумент всередині нього . Якщо ви хочете /etc/nginxбути символьним посиланням, слід спочатку видалити цей каталог і запустити ту саму команду.



10
Це посилання Unix.SE вирішено тут. Здається, ми отримали кругову залежність.
кайзер

30

Це те, що lnзадокументовано робити, коли ціль вже існує і це каталог. Якщо ви хочете , /etc/nginxщоб бути символічного посилання , а не містити символьне посилання, то вам краще не створювати його як каталог перший!


51
Ваша відповідь має сенс лише в контексті читача, який вже знає відповідь. Це марно для тих, хто задасть це питання
Рікардо Сапорта

1
Чи можу я фактично створити посилання на корінь встановленого пристрою USB (тому я не можу стерти спочатку цю папку)?
Григорій Корнілов

1
@GrigoryKornilov ви можете створити символьне посилання на все, що завгодно, включаючи те, що не існує. Це питання стосувалося місця, де створюється символьне посилання (а не там, де воно вказує). Особлива назва файлу у файловій системі - це звичайний файл, або це каталог, або це симпосилання (або це сокет, труба або пристрій). Це не може бути більше ніж одна з цих речей одночасно (тобто ви не можете мати більше одного окремого файлу з таким самим іменем).
Селада

10

У сценарії корисно щось подібне:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

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


1
Відмінно! Це точне рішення. немає необхідності створювати каталог, якщо він вже є. Це справді добре налаштувати жорстке посилання та затопити його в чорний отвір (/ dev / null)
Cosmo Arun
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.