Ln

Программа ln предназначена для создания жестких и символьных ссылок.

ln [-s] файл ссылка

При вызове программы необходимо указать файл, на который будет создаваться ссылка и имя самой ссылки. По умолчанию создаются жесткие ссылки. Для создания символьной ссылки необходимо указать параметр –s.

Рассмотрим пример работы с ссылками.

$ cat > test
The test file
The test file
$ ls -l
итого 4
-rw-r--r--  1 artur users 28 2005-06-03 12:50 test
$ ln test hardlink
$ ln -s test slink
$ ls -li
итого 8
456961 -rw-r--r-- 2 artur users 28 2005-06-03 12:50 hardlink
456962 lrwxrwxrwx 1 artur users  4 2005-06-03 12:51 slink -> test
456961 -rw-r--r-- 2 artur users 28 2005-06-03 12:50 test
$

При помощи программы cat создается файл test1. (После ввода информации не забудьте нажать комбинацию клавиш «Ctrl+D».)Затем создаются: жесткая ссылка hardlink и символьная ссылка slink. Имена ссылок могут быть любыми.

При вызове программы ls был указан параметр –i — выводить номер inode файла. Обратите внимание на то, что у файлов test и hardlink абсолютно одинаковые параметры, включая одни и те же номера inode. Физически это одни и те же данные, но имеющие несколько имен. А вот файл slink — это совсем другой файл, об этом говорит уникальный номер его inode. Программа ls запускается по умолчанию с параметром –F и поэтому после имени символьной ссылки показывает файл на который она ссылается.

Обратите внимание на третье поле при выводе данных программой ls, в нем находится число, обозначающее количество жестких ссылок на файл. У hardlink и test там стоит число 2. Подробную информацию о файле можно посмотреть при помощи программы stat:

$ stat hardlink
  File: `hardlink'
  Size: 28    Blocks: 8   IO Block: 4096 обычный файл
Device: 305h/773d  Inode: 456961 Links: 2
Access: (0644/-rw-r--r--) Uid:(1000/artur) Gid:(100/users)
Access: 2005-06-03 13:09:54.000000000 +0400
Modify: 2005-06-03 12:50:41.000000000 +0400
Change: 2005-06-03 13:09:47.000000000 +0400
$ stat slink
  File: `slink' -> `test'
  Size: 4     Blocks: 0   IO Block: 4096 символьная ссылка
Device: 305h/773d  Inode: 456962  Links: 1
Access: (0777/lrwxrwxrwx) Uid:(1000/artur) Gid:(100/users)
Access: 2005-06-03 13:14:05.000000000 +0400
Modify: 2005-06-03 12:51:10.000000000 +0400
Change: 2005-06-03 12:51:10.000000000 +0400
$

При просмотре файлов hardlink и slink будет показано содержимое файла, на который они ссылаются:

$ cat hardlink
The test file
The test file
$ cat slink
The test file
The test file
$

Теперь удалим файл test и посмотрим, что получится.

$ rm test
$ ls -l
итого 4
-rw-r--r--  1 artur users 28 2005-06-03 12:50 hardlink
lrwxrwxrwx  1 artur users  4 2005-06-03 12:51 slink -> test
$ cat hardlink
The test file
The test file
$ cat slink
cat: slink: No such file or directory
$

При выводе списка файлов программа ls покрасила файл slink в красный цвет. Таким образом намекая нам, что файлу slink стыдно за то, что он ссылается на несуществующий файл. При обращении к hardlink мы получаем содержимое файла. Напомню, что файл (его данные) существует до тех пор, пока на него есть хотя бы одна жесткая ссылка. При обращении к файлу slink получили сообщение об ошибке.

Теперь создадим файл test.

$ touch test
$ ls -li
итого 4
456961 -rw-r--r-- 1 artur users 28 2005-06-03 12:50 hardlink
456962 lrwxrwxrwx 1 artur users  4 2005-06-03 12:51 slink -> test
456963 -rw-r--r-- 1 artur users  0 2005-06-03 13:21 test
$ cat slink
$ cat hardlink
The test file
The test file
$

Как видно по выводу программы ls, файлы hardlink и test — это два разных файла. Об этом свидетельствуют разные номера inode и число 1 в поле, определяющем количество жестких ссылок. Да и размеры у этих файлов разные. Но после создания файла test ссылка slink снова выводится нормальным цветом, ведь появился файл, на который она ссылается. Символьной ссылке все равно, какой inode у этого файла, в ней записано имя файла, а не его номер. При просмотре содержимого slink на экран ничего не выводилось, ведь размер test равен нулю, то есть в нем нет никаких данных. А hardlink содержит старые данные.

Еще одна замечательная особенность символьных ссылок заключается в том, что их можно создавать на файлы, которые в данный момент не существуют. Ссылка будет создана, но не будет работать до тех пор, пока не появится файл, на который она ссылается. Так можно создавать ссылки на файлы в сетевых файловых системах или CD-ROM.

Символьные ссылки — это очень удобный инструмент, которым Вы будете пользоваться постоянно.