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