1. Ссылки Итак, жёсткую ссылку на директорию нельзя создать. Однако, если вы создадите директорию «a» в домашней папке и напишите ls -l, то в столбце «жёсткие ссылки» вы увидите двойку. Почему? Попробуйте перейти в неё и напишите ls -al. Видите "." и ".."? Так вот, в этом случае "." — жёсткая ссылка на созданную вами директорию. То есть сама директория и "." это две жесткие ссылки на директорию. Пойдём дальше. Создадим внутри «a» директорию «b». Вернёмся назад, в домашнюю папку и напишем ls -l. В этом случае в столбце будет уже «3». Зайдём в директорию «b» и напишем ls -al. Там видим знакомые нам точечки ("." и ".."). Так вот, в этом случае «..» — это жёсткая ссылка на родительскую директорию «b», т.е. на директорию «а». Понимаете, к чему это я? Так, создавая директории внутри «а» вы создаёте ещё и жёсткие ссылки на «а». Поэтому количество ссылок и увеличивается. Первый вопрос по ссылкам решён. Теперь второй вопрос. Допустим, мы находимся в /home/zar/ и выполняем следующие команды: echo 1 > 1 # создадим файл 1 с содержимым «1» ln -s 1 2 # создадим символьную ссылку на 1 и назовём её 2 ln 2 3 # создадим жёсткую ссылку 3 на символьную ссылку 2 (оно всё равно будет ссылаться на 1) mkdir 4 # создадим директорию 4 mv 3 4 # перенесём жёсткую ссылку 3 в директорию 4 cat 4/3 # выведем содержимое жёсткой ссылки 3 Здесь начинается магия. cat 4/3 скажет, что файла 1 нет. Почему? Когда мы создали «2» — в «2» хранился относительный адрес до файла 1. Относительный адрес — это когда сам файл ищется по адресу относительно текущей директории. Например, если символьная ссылка «lnk» содержит адрес «abcd» и лежит в папке /home/zar/, то cat lnk выведет значение из файла (если такой файл есть) /home/zar/abcd. Если перенести «lnk» в /home/afanas/, то cat lnk попытается вывести /home/afanas/abcd. Вот. Поэтому, когда мы делаем cat 4/3, то 3 ссылается на 2, в которой хранится относительный адрес «1» и cat пытается найти файл /home/zar/4/1. Далее, команды в списке продолжались: ln 4 5 # физически невыполнимая команда создания жёсткой ссылки на директорию 4 ln -s 4 6 # уже реализуемая команда создания символьной ссылки на 4 echo 3 > 4/1 # создаём файл 1 в директории 4 с содержимым «3» cat 4/3 # теперь это команда найдёт /home/zar/4/1 и выведет, внезапно, «3» Ну вы поняли.