Посилання в Unix-подібних системах — це свого роду вказівник, схожий до вказівників в мовах програмування, за винятком того, що він вказує на файл або каталог. Посилання дають змогу декільком іменам файлів посилатись на один і той же файл, розміщений десь в іншому місці. У Linux-системах існують два типи посилань: символьне (або “мʼяке”, “символічне”) та жорстке посилання.
Жорсткі посилання (Hard links)
Уявімо, що нам потрібно зробити копію файлу. В процесі копіювання створиться новий файл. Його дані будуть скопійовані у вільне місце на диску, а для файлу система призначить унікальний ідентифікатор — індексний номер (скор. “inode” від англ. “index node“).
Створюючи жорстке посилання (англ. “hard link”) на файл, ми привʼязуємось до його індексного номеру і отримуємо той же файл (з новим іменем), на котрий вказує посилання, але без копіювання файлу.

Для створення жорсткого посилання використовується команда ln (від англ. “link”), що має простий синтаксис:
$ ln цільовий_файл назва_посилання
Для прикладу створимо посилання з іменем hardlink1, що вказує на вже існуючий файл file1:
$ ln file1 hardlink1
Щоб впевнитись, що file1 та посилання hardlink1 є одним і тим же обʼєктом файлової системи, порівняємо їх індексні номери, виконавши команду ls разом з опціями -l (показати розширену інформацію), -i (показувати inode) та -h (використовувати букви для позначень розмірів):
$ ls –lih
Результат:

Як можна помітити, індексні номери file1 і hardlink1 є ідентичними — 5928960. Тепер давайте створимо ще одне посилання і глянемо, як буде поводити себе лічильник посилань (число після групи встановлених дозволів файлів):
$ ln file1 hardlink2
$ ls –lih
Результат:

Зверніть увагу, тепер лічильник посилань показує цифру 3 замість 2.
Символьні посилання (Symbolic links)
Символьне посилання (скор. “symlink” від англ. “symbolic link“), на відміну від жорсткого посилання, вказує не на індексний номер файлу, а на його імʼя (шлях). Символьне посилання є схожим до ярликів у Windows-системах.

Символьне посилання можна створити тією ж командою ln, додавши до неї параметр -s:
$ ln -s file1 symlink1
При цьому буде створено новий (!) обʼєкт файлової системи з іменем symlink1, що вказує на вже існуючий файл file1:

Літера l в групі прав доступу до файлу дає зрозуміти те, що даний файл є символьним посиланням на інший файл. Це відображено і в назві файлу — symlink1 -> file1.
Порівняємо індексні номери file1, hardlink1, hardlink2 та symlink1:

Як бачимо, індексний номер symlink1 відрізняється від інших номерів, тому що для файлової системи це вже два незалежні обʼєкти. Також бачимо різницю в наборі прав.
Жорсткі посилання vs. Символьні посилання
Нижче представлено основні відмінності між жорсткими та символьними (м’якими) посиланнями.
Жорсткі посилання:
не можуть виходити за межі файлової системи (тобто жорстке посилання працює тільки в межах своєї файлової системи);
не можна використовувати з директоріями;
містять inode та дозволи вихідного файлу;
дозволи оновлюються при зміні дозволів вихідного файлу;
пов’язані з вмістом вихідного файлу. Якщо ви створите жорстке посилання на файл та внесете зміни у вміст файлу (або посилання), то зміни будуть присутні в обох обʼєктах;
за допомогою жорсткого посилання можна переглядати вміст файлу, навіть якщо вихідний файл переміщено або видалено.
Символьні (м’які) посилання:
можуть виходити за межі файлової системи;
можна використовувати з директоріями;
мають власні (окремі) inode та права доступу;
дозволи не оновлюються;
пов’язані лише з іменем (шляхом) вихідного файлу, а не з його вмістом;
можна змінити імʼя, атрибути самого посилання або перенаправити посилатися на інший файл, і при цьому вихідний файл залишиться незмінним (але майте на увазі, що у випадку, коли ви через посилання відкриєте сам файл для редагування, то зміни внесуться безпосередньо у вихідний файл).
Видалення посилань
Якщо ви видалите жорстке посилання, то пов’язаний з ним файл існуватиме до тих пір, поки існує хоча б одне жорстке посилання на нього. Якщо ви видалите вихідний файл, але при цьому в іншому місці залишиться жорстке посилання на нього, то “зміниться” каталог розміщення файлу. В якості прикладу додамо в наш file1 рядок "Welcome to aCode.com", видалимо файл, а після цього спробуємо звернутися до жорсткого посилання hardlink2:

Зверніть увагу, навіть попри те, що вихідного файлу вже немає, ми і досі можемо отримати доступ до його вмісту, використовуючи жорстке посилання.
З символьними посиланнями все працює трохи по-іншому. При видаленні файлу, на який вказує символьне посилання, саме посилання стає неактивним. Наприклад, видалимо файл file1, на який у нас є символьне посилання symlink1:
$ rm file1

Символьне посилання перетвориться на “бите” посилання, яке вказує на неіснуючий файл. Якщо спробувати до нього звернутися, то система поверне повідомлення про помилку:
petro@pc:~$ file file1
file1: cannot open `file1' (No such file or directory)
petro@pc:~$ file symlink1
symlink1: broken symbolic link to file1
petro@pc:~$
Висновки
Посилання є невідʼємною частиною Linux-систем, і призначені для зручної організації навігації по файлових системах. Якщо у вас залишилися запитання, не соромтесь їх писати в коментарях!

(7 оцінок, середня: 4,43 з 5)