Материал предоставлен http://it.rfet.ru

Символьные ссылки

У жестких ссылок есть два существенных ограничения:

  1. Жесткая ссылка может указывать только на файл, но не на каталог, потому что в противном случае в файловой системе могут возникнуть циклы - бесконечные пути.
  2. Жесткая ссылка не может указывать на файл в другой файловой системе. Например, невозможно создать на жестком диске жесткую ссылку на файл, расположенный на дискете. Чтобы избежать этих ограничений, были разработаны символьные ссылки. Cимвольная ссылка - это просто файл, в котором содержится имя другого файла. Cимвольные ссылки, как и жесткие, предоставляют возможность обращаться к одному и тому же файлу по разным именам. Кроме того, символьные ссылки могут указывать и на каталог, чего не позволяют жесткие ссылки. Символьные ссылки называются так потому, что содержат символы - путь к файлу или каталогу.

Cимвольная ссылка (symbolic link, файл-ссылка) — это файл особого типа (l), в котором содержится путь к другому файлу. Если на пути к файлу встречается cимвольная ссылка, система выполняет подстановку: исходный путь заменяется тем, что содержится в ссылке.

Cимвольную ссылку можно создать при помощи команды ln с ключом -s (сокращение от ”symbolic”):

[ivan@localhost ivan]$ ln -s examples/text text-symlink
[ivan@localhost ivan]$ ls -li

. . .

127699 drwxr-xr-x 2 ivan ivan 4096 Окт 4 17:12 examples
127705 -rw-r--r-- 2 ivan ivan 653 Сен 30 10:04 text-hardlink
 3621 lrwxrwxrwx 1 ivan ivan  13 Окт 4 18:05 text-symlink -> examples/text
[ivan@localhost ivan]$

Пример 4.14. Создание символьных ссылок

Теперь Иван решил создать в своем домашнем каталоге символьную ссылку на файл text и назвать ее text-symlink. Команда ls -li отобразила этот файл совсем не так, как остальные: стрелочка (”→”) указывает, куда направлена ссылка. Кроме того, Иван обратил внимание, что номер индексного дескриптора (первое поле), размер и время создания файла text-symlink отличаются от text-hardlink, а также во втором поле (количество жестких ссылок на файл) text-symlink указано 1. Все эти признаки недвусмысленно свидетельствуют о том, что text-symlink и text - это разные файлы. Однако если выполнить команду cat text-symlink, то на экран будет выведено содержимое файла text.

Символьная ссылка вполне может содержать имя несуществующего файла. В этом случае ссылка будет существовать, но не будет “работать”: например, если попробовать вывести содержимое такой “битой” ссылки при помощи команды cat, будет выдано сообщение об ошибке.

Узнать, куда указывает символьная ссылка, можно при помощи утилиты realpath:

[ivan@localhost ivan]$ realpath text-symlink
/home/ivan/examples/text

Пример 4.15. Раскрытие символьных ссылок

Индексные дескрипторыУдаление файлов и каталогов