


Next:Символические
ссылкиUp:Работа
со ссылками на Previous:Работа
со ссылками на
Жесткие ссылки
Для создания нескольких ссылок к одному файлу
служит команда ln. Пусть, например, в текущем каталоге имеется
файл с именем foo. Увидеть соответствующий ему номер индексного
дескриптора можно с помощью команды ls -i. Пример:
/home/larry# ls -i foo
22192 foo
/home/larry#
Здесь файлу foo соответствует индексный дескриптор номер 22192
файловой системы. К файлу foo можно создать еще одну ссылку и
назвать ее bar. Это делается следующим образом:
/home/larry# ln foo bar
Теперь с помощью команды ls -i можно увидеть, что оба файла относятся
к одному и тому же индексному дескриптору:
/home/larry# ls -i foo bar
22192 bar 22192 foo
/home/larry#
Теперь, обращаясь к файлу foo или bar, мы, в действительности,
будем обращаться к одному и тому же файлу. Производя изменения в файле
foo, мы можем увидеть, что они появились также и в файле bar.
Со всех точек зрения файлы foo и bar -- это один и тот
же файл.
Подобные ссылки называются жесткими ссылками (hard links), поскольку
они создают непосредственную связь с конкретным индексным дескриптором.
Отметим, что жесткие ссылки можно создавать только тогда, когда файлы находятся
в одной и той же файловой системе, в то время как символические ссылки
(см. ниже) не имеют таких ограничений.
При удалении файла командой rm в действительности удаляется
только одна ссылка на файл. Если мы теперь введем команду
/home/larry# rm foo
то будет удалена только ссылка под названием foo, а ссылка bar
будет продолжать существовать. По-настоящему файл будет удален из файловой
системы только тогда, когда к нему не останется больше ссылок. Обычно на
один файл имеются только одна ссылка, так что команда rm его удалит.
Однако если к файлу имеются множественные ссылки, то команда rm
будет удалять только одну ссылку, и для того, чтобы этот файл удалить,
придется удалять все ссылки на этот файл.
Команда ls -l выдает (помимо прочей
информации) число ссылок на каждый файл.
/home/larry# ls -l foo bar
-rw-r--r-- 2 root root 12 Aug 5 16:51 bar
-rw-r--r-- 2 root root 12 Aug 5 16:50 foo
/home/larry#
Цифра "2" во второй колонке этого списка обозначает число
ссылок на файл.
Отметим, что каталог в действительности представляет собой просто файл,
содержащий информацию о связях (ссылках) между именами файлов и индексными
дескрипторами. Также каждый каталог содержит, как минимум, две жестких
ссылки: ссылка "." указывает на тот же самый каталог, а ссылка
".." указывает на родительский каталог. У корневого каталога
(/) ссылка ".." указывает на тот же самый каталог
/. Иными словами, родительским каталогом корневого каталога является
тот же самый каталог.



Next:Символические
ссылкиUp:Работа
со ссылками на Previous:Работа
со ссылками на
root
Sun Aug 29 12:01:30 MSD 1999