Ln

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

ln - команда UNIX, що встановлює зв'язок між файлом і ім'ям файла.

В Unix існує два види посилань, зазвичай званих жорсткі посилання та символьні, або "м'які" посилання. Жорстка посилання є всього лише ім'ям якого файлу. (Таким чином, файл може мати кілька імен. Він буде вилучений з диска тільки тоді, коли буде видалено останнє з його імен. Кількість імен, які має файл, показує команда Ls (1). Немає такого поняття, як справжнє ім'я: всі імена мають однаковий статус. Зазвичай, але не обов'язково, всі імена файла знаходяться на файловій системі, яка також містить і його дані.)

М'які посилання (або символьна посилання, або symlink) повністю відрізняється від жорсткої посилання: вона є маленьким спеціальним файлом, який містить шлях до файлу. Таким чином, м'яка посилання може вказувати на файли, які знаходяться на інших файлових системах (наприклад, змонтованих по NFS з іншої машини) і не потребує наявності того файлу, на який вона вказує. Коли відбувається спроба доступу (з допомогою системних викликів open (2) або stat (2)), ядро ​​операційної системи замінює посилання на той шлях, який вона містить. (Проте, команда rm (1) і системний виклик unlink (2) видаляють саму посилання, а не файл, на який вона вказує. Для читання стану символьної посилання, а також імені файлу, на який вона вказує, використовуються системні виклики lstat (2) і readlink (2). Для інших системних викликів, які залежать і розрізняються для різних операційних систем, може здійснюватися робота як з самої символьної посиланням, так і з файлом, на який вона вказує.)

Формат команди:

ln файл1 файл2

  1. Створюється «жорстка» посилання (hard link)

ln-s файл1 файл2

  1. Створюється «символічна» ссилка (symbolic link)

Ця команда створює жорстку посилання на файл «файл1», яка буде виглядати як «файл2». Таким чином для файлової системи вихідний файл «файл1» і посилання на нього «файл2», насправді фізично будуть одним і тим же файлом. Жорсткі посилання не можуть вказувати на файли в інших файлових системах.

Якщо ви створюєте символічне посилання (використовуючи ключ «-s»), то при цьому файлу «файл1» може і не існувати. Символічна посилання з ім'ям «файл2» все одно буде створена.

В існуючих реалізаціях, якщо команда ln може створювати жорстку посилання на каталог, то вона може це робити тільки від імені суперкористувача. POSIX забороняє системному виклику link (2) і утиліті ln створювати жорсткі посилання на каталоги (але не забороняє створювати жорсткі посилання на файли, які знаходяться на інших файлових системах).

За замовчуванням ln не видаляє існуючі файли або існуючі символьні посилання. (Таким чином, команда ln може бути використана для цілей блокування: вона буде успішно спрацьовувати тільки якщо куди вже не існує.) Однак, можна змусити його видаляти файли і посилання, вказавши опцію-f.