> For the complete documentation index, see [llms.txt](https://denis-3.gitbook.io/linuxguide-linux-dlya-nachinayushikh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://denis-3.gitbook.io/linuxguide-linux-dlya-nachinayushikh/terminal-linux/ssylki.md).

# Ссылки

## Что такое ссылки?

И так, что такое ссылки? Ссылка в Linux — это что-то похожее на ярлыки в Windows, только ссылки появились значительно раньше. Они указывают, ссылаются на определённый файл или каталог и могут находиться в другом месте.&#x20;

Ссылки в Linux делятся на два типа — жёсткие и символические. Поговорим о каждом из них.

## Жёсткие и символические ссылки

**Жёсткие ссылки** похожи на сами файлы, на которые они ссылаются. Но для них есть 2 ограничения. Жёсткая ссылка не может ссылаться на файл. Она также не может указывать на файл, находящийся за границами своей файловой системы. То есть, эта ссылка не может указывать на файл на другом жёстком диске.

**Символические ссылки** были созданы позже и не имели таких ограничений, как у жёстких ссылок. А если удалить сначала файл, то символическая ссылка станет «битой». «Битая» ссылка, значит указывает в пустоту. Обычно при создании ссылок используют именно этот тип.

## ln

Для создания ссылок есть утилита ln. Она используется как для символических, так и для жёстких ссылок. Здесь есть свои ключи.

#### Создание символической ссылки

Создадим символическую ссылку на какой-нибудь файл. Создадим файл hello.txt и напишем туда какой-нибудь текст, например "Hello!".

<figure><img src="/files/IHrCoaVXB7CvrJDFH2tN" alt=""><figcaption></figcaption></figure>

Теперь сделаем символическую ссылку на этот файл. Для этого используется ключ `-s`. Потом пишем файл, на который хотим ссылаться, и, наконец, пишем название ссылки. У меня получается следующая команда: `ln -s hello.txt link`. Как мы видим, в рабочей директории появилась ссылка.

<figure><img src="/files/Zkk56enXLwyrfqgBtPFW" alt=""><figcaption></figcaption></figure>

Если же посмотреть подробную информацию о содержимом каталога (`ls -l`), мы увидим, что после имени ссылки link идёт стрелка к имени файла hello.txt. Таким образом, показывается тот файл, на который указывает ссылка. А если захотим посмотреть содержимое ссылки, то увидим содержимое самого файла hello.txt.

<figure><img src="/files/hx3u3mJRMY8vfDBeXjz0" alt=""><figcaption></figcaption></figure>

При удалении ссылки, файл остаётся на месте. Но если удалить файл, то ссылка, как я уже говорил, станет "битой". И при просмотре содержимого этой ссылки будет появляться ошибка о том, что данный файл не существует. Таким же способом можно ссылаться на директорию с помощью символической ссылки.

<figure><img src="/files/hOeuFRM51g3TF18LXgOp" alt=""><figcaption></figcaption></figure>

#### Создание жёсткой ссылки

Чтобы создать жёсткую ссылку нужно ввести ту же команду, что и для символической, но без аргументов. Создадим тот же файл hello.txt с тем же содержимым. Создадим ссылку, указывающую на hello.txt с названием hlink. Так как символическую ссылку link мы не удалили, а она ссылалась на hello.txt, она будет указывать на вновь созданный файл hello.txt. Получается, на один файл могут указывать сразу несколько ссылок. В списке (ls -l) ссылка hlink определяется, как обычный файл. У неё те же параметры, что и у файла, на который указывает жёсткая ссылка. Если посмотреть содержимое ссылки hlink, оно будет равняться содержимому файла hello.txt.

<figure><img src="/files/HLnagW0oUiTXyXjUD636" alt=""><figcaption></figcaption></figure>

Но, если удалить файл hello.txt и посмотреть содержимое ссылки hlink, то оно всё равно будет равняться содержимому файла hello.txt, несмотря на то, что его уже нет. Это и есть главное отличие символической ссылки от жёсткой. Жёсткая ссылка - это как обычный файл. Она также указывает на определённое место на диске. Поэтому даже после удаления основного файла, жёсткая ссылка всё равно будет указывать на это место, соответственно, у неё будет то же содержимое.

<figure><img src="/files/7v6FnBCBzKLwsyWgSyjH" alt=""><figcaption></figcaption></figure>
