[ Содержание ]
Программа 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.
Символьные ссылки — это очень удобный инструмент, которым Вы будете пользоваться постоянно.
[ Содержание ]