Команда link позволяет задействовать одноименную утилиту, предназначенную для создания жестких ссылок. Жесткие ссылки привязываются к содержимому файлов, а точнее, к их структурам inode, являются по своей сути дополнительными именами этих файлов и могут создаваться в лишь пределах отдельных файловых систем. Данная утилита является значительно урезанной версией утилиты ln, позволяющей создавать и символьные ссылки, но при этом имеет более запоминающееся имя.
Базовый синтаксис команды выглядит следующим образом:
$ link [параметры] имя-целевого-файла имя-ссылки
Утилита поддерживает несколько параметров, не представляющих особого интереса для пользователей. Этими параметрами являются параметр --help для вывода справки и --version для вывода номера версии.
Для примера рассмотрим следующую ситуацию: текстовый файл находятся в директории files, а пользователю нужно создать ссылку на этот файл в директории уровнем выше.
$ tree
.
└── files
└── file.txt
1 directory, 1 file
Для создания жесткой ссылки на файл достаточно указать имя файла и имя ссылки:
$ link files/file.txt file.txt
В результате ссылка появится в текущей директории:
$ tree
.
├── files
│ └── file.txt
└── file.txt
1 directory, 2 files
Убедиться в факте создания жесткой ссылки достаточно просто: утилита ls не обозначит ее соответствующим образом, ведь она по своей сути является дополнительным именем файла:
$ ls -l file.txt
-rw-rw-r-- 3 alex alex 9 окт 11 2014 file.txt
Жесткие ссылки не могут создаваться между отдельными файловыми системами. Для проверки этого тезиса достаточно попытаться создать ссылку на этот же файл в директории /tmp:
$ link files/file.txt /tmp/file.txt
link: невозможно создать ссылку '/tmp/file.txt' на 'files/file.txt': Неверная ссылка между устройствами
Сообщение об ошибке подтверждает данный тезис.
Для проверки тезиса о том, что жесткая ссылка является дополнительным именем файла можно попробовать удалить исходный файл:
$ cat files/file.txt
Just test
$ cat file.txt
Just test
$ unlink files/file.txt
$ tree
.
├── files
└── file.txt
1 directory, 1 file
$ cat file.txt
Just test
Cодержимое файла все еще доступно благодаря существованию жесткой ссылки.
Для удаления жестких ссылок следует действовать по аналогии с обычными файлами:
$ unlink file.txt
$ tree
.
└── files
1 directory, 0 files
Жесткая ссылка была удалена.