/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" во второй колонке этого списка обозначает число ссылок на файл.
Отметим, что каталог в действительности представляет собой просто файл, содержащий информацию о связях (ссылках) между именами файлов и индексными дескрипторами. Также каждый каталог содержит, как минимум, две жестких ссылки: ссылка "." указывает на тот же самый каталог, а ссылка ".." указывает на родительский каталог. У корневого каталога (/) ссылка ".." указывает на тот же самый каталог /. Иными словами, родительским каталогом корневого каталога является тот же самый каталог.