Тут ми зіштовхнутися з дуже поширеною помилкою (навіть серед користувачів 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 $
Але символічні посилання існують завдяки тому, що вони долають кілька обмежень, властивих для (“жорстких”) посилань:
Ви не можете створити посилання на inode в каталозі, який знаходиться в інший файловій системі. Причина проста: лічильник посилання зберігається в самому inode'і, а останній не може спільно використовуватися в різних файлових системах. А симлінки дозволяють зробити це.
Ви не можете створити посилання на каталоги, щоб уникнути створення циклів в файловій системі. Але можете створити симлінк, який вказує на каталог, і використовувати його так, якби це насправді був каталог.
Тому символічні посилання дуже корисні у різних ситуаціях, і дуже часто люди прагнуть їх використовувати для зв'язування файлів навіть тоді, коли можна використовувати звичайне посилання. Одна з переваг звичайного зв'язування полягає в тому, що ви не втратите файл якщо видалите “оригінальний”.
І насамкінець, якщо ви були уважні, то могли помітити, що розмір симлінка - це просто розмір рядка.