6. Символічні посилання. Обмеження “жорстких” посилань

Тут ми зіштовхнутися з дуже поширеною помилкою (навіть серед користувачів UNIX®), яка є в основному наслідком того, що посилання, як ми бачили раніше (невірно звані “жорсткими” посиланнями), асоціюються тільки зі звичайними файлами (і ми бачили, що це так — оскільки навіть символічні посилання є “пов'язаними”). А для цього потрібно, щоб ми спочатку роз'яснили, що ж уявляють собою символічні посилання (часто звані “м'якими” посиланнями чи, навіть ще частіше, “симлінками”).

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

$ echo Hello >myfile
$ ln -s myfile mylink
$ ls -il
total 4
169 -rw-rw-r--   1 queen  queen  6 Dec 10 21:30 myfile
416 lrwxrwxrwx   1 queen  queen  6 Dec 10 21:30 mylink -> myfile
$ cat myfile
Hello
$ cat mylink
Hello

Як бачите, тип файла mylink - 'l' (від слова Link), тобто він є символічним посиланням. Права доступу для символічного посилання значення не мають: вони завжди будуть rwxrwxrwx. Ви також можете бачити, що воно і файл myfile - це два різних файла, бо їхні номери inode відрізняються. Але воно посилається на нього символічно, тому, коли ви вводите команду cat mylink, насправді ви виводите вміст файла myfile. Щоб продемонструвати, що символічне посилання містить випадковий рядок, ми можемо зробити наступне:

$ ln -s "я - не існуючий файл" інший_лінк
$ ls -il інший_лінк
418 lrwxrwxrwx    1 queen     queen           20 Dec 10 21:43 інший_лінк 
-> я - не існуючий файл
$ cat інший_лінк
cat: інший_лінк: No such file or directory
$

Але символічні посилання існують завдяки тому, що вони долають кілька обмежень, властивих для (“жорстких”) посилань:

Тому символічні посилання дуже корисні у різних ситуаціях, і дуже часто люди прагнуть їх використовувати для зв'язування файлів навіть тоді, коли можна використовувати звичайне посилання. Одна з переваг звичайного зв'язування полягає в тому, що ви не втратите файл якщо видалите “оригінальний”.

І насамкінець, якщо ви були уважні, то могли помітити, що розмір симлінка - це просто розмір рядка.