Использование символических ссылок
Символические ссылки — это особый вид файлов, представляющий со- бой указатели на другие файлы. Символические ссылки создают командой ln -s, где первый аргумент — имя уже существующего файла, а второй аргумент — либо имя символической ссылки, либо каталога, где будет об- разован файл символической ссылки с таким же именем, что и исходный файл (пример 4.32).
Пример 4.32. Создание символической ссылки на файл |
$ ln -s file1 slink1 | |||
$ ls -li file1 slink1 | |||
4639 -rw-rw-r-- | 1 user1 | users | 0 Dec 11 15:55 file1 |
1604 lrwxrwxrwx | 1 user1 | users | 5 Dec 16 01:37 slink1 -> |
file1
$ echo 123 > file1
$ cat slink1 123
В примере 4.32 на файл file1 создана символическая ссылка slink1. Метадан- ные у file1 и slink1 различаются, поскольку это совершенно разные файлы. Тем не менее, к файлу можно обращаться с помощью ссылки.
Можно создавать ссылки на каталоги (пример 4.33).
Пример 4.33. Создание символической ссылки на каталог |
$ ln -s ~/dir1 /tmp
$ ls -ldi dir1 /tmp/dir1
4635 drwxr-xr-x 2 user1 users 144 Dec 16 00:26 dir1
163286 lrwxrwxrwx 1 user1 users 16 Dec 16 01:12 /tmp/dir1 ->
/home/user1/dir1
В этом примере создается символическая ссылка на каталог dir1 в каталоге
/tmp. Заметно, что символическая ссылка имеет совершенно иной тип файла и номер inode, она не ограничена одной файловой системой. Обратите также внимание, что, во-первых, символические ссылки можно устанавливать на каталоги, а, во-вторых, при создании символической ссылки в другом катало- ге следует указывать полное имя исходного файла. Если второе требование не выполняется, то:
r либо ссылка будет оборванной (или иначе — висящей), т. е. символиче- ская ссылка будет указывать на несуществующий файл;
r либо ссылка будет указывать на существующий файл в целевом каталоге, имя которого (случайно или намеренно) совпадет с исходным файлом, од- нако ссылка будет указывать не на исходный файл.
Символическая ссылка может оказаться оборванной (пример 4.34) в случае, если:
r файл, на который она указывает, перемещен, переименован или удален;
r нет достаточных прав доступа на файл, указываемый символической ссылкой;
r файл находится в файловой системе, которая сейчас не смонтирована.
Пример 4.34. Оборванная символическая ссылка |
$ mv file1 file11
$ cat slink1
cat: slink1: No such file or directory
После переименования файла file1 в file11 ссылка slink1 стала оборванной.
Приведенный далее пример 4.35 демонстрирует, что символическая ссылка может быть создана и на специальный файл.
Пример 4.35. Создание ссылки на файл устройства |
$ ln -s /dev/fd0 .
$ ls -l fd0
lrwxrwxrwx 1 user1 users 8 Dec 16 01:13 fd0 -> /dev/fd0
Длина файла символической ссылки равна длине имени файла, на который она указывает.
Команда cp обладает специальной опцией -s, которая позволяет вместо ко- пирования файлов создавать на них символические ссылки (пример 4.36).
Пример 4.36. Опция -s команды cp |
$ cp -s ~/f??? /tmp
$ ls -l /tmp/f???
lrwxrwxrwx 1 user1 users 16 Dec 16 01:52 /tmp/f112 -> /home/user1/f112
lrwxrwxrwx 1 user1 users 16 Dec 16 01:52 /tmp/f113 -> /home/user1/f113
lrwxrwxrwx 1 user1 users 16 Dec 16 01:52 /tmp/f117 -> /home/user1/f117
lrwxrwxrwx 1 user1 users 16 Dec 16 01:52 /tmp/f122 -> /home/user1/f122
В примере 4.36 на группу файлов были созданы символические ссылки в ка- талоге /tmp.
Если используется команда cp, для которой в качестве аргумента указаны файлы символических ссылок, то будут скопированы не файлы символиче- ских ссылок, а файлы, на которые они указывают. Если же необходимо ско- пировать не исходные файлы, а именно символические ссылки, то следует использовать опцию -d команды cp (пример 4.37).
Пример 4.37. Копирование символических ссылок |
$ cp -d /tmp/f122 Documents/
$ ls -l Documents/f122
lrwxrwxrwx 1 user1 users 16 Dec 16 02:00 Documents/f122 ->
/home/user1/f122
Дата добавления: 2015-06-12; просмотров: 936;