Что такое символьная ссылка в linux
Перейти к содержимому

Что такое символьная ссылка в linux

  • автор:

Создание ссылок в Linux

В командной оболочке Linux, чтобы создать еще одну жесткую ссылку на файл, то есть еще одно имя, используется команда ln (от «link» – ссылка, связывать). Первым аргументом указывается существующее имя файла, вторым – имя новой ссылки. Адреса обоих аргументов могут быть как относительными, так и абсолютными.

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

В примере для файла butt2.png , который находится в каталоге image , создаются две дополнительные жесткие ссылки. Одна – в текущем каталоге ( ./ ), другая – в папке Загрузки . В первом случае файл не переименовывается, т. к. это не обязательно, ведь полные имена файлов различны. Однако можно и переименовать, как это происходит во втором случае.

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

Просмотр информации о ссылках

Мы можем посмотреть информацию о каждом имени и убедиться, что это один и тот же файл, так как все данные совпадают.

Три ссылки указывают на один и тот же дескриптор

Символьные ссылки создаются с помощью той же команды ln , однако используется ключ -s (от «symbolic»). В качестве первого аргумента пишется абсолютный адрес файла или каталога, на который делается ссылка, в качестве второго – абсолютный или относительный адрес создаваемой мягкой ссылки.

Создание символьной ссылки: ln -s

Здесь на рабочем столе создаются две символьные ссылки: на каталог image и на файл 2018.ods . Имя ссылки можно оставить таким же как у объекта, если ссылка создается в другом каталоге. Команда ls -l среди прочего отображает адрес, на который указывает символьная ссылка. Если бы мы при создании мягкой ссылки использовали относительные адреса источников, то они так бы и хранились, и файлы-ссылки были бы нерабочими.

Практическая работа

Создайте текстовый файл с помощью перенаправления вывода команды cal . Создайте на этот файл дополнительную жесткую ссылку. Внесите изменения в файл, обратившись к нему по второму имени. Изменения можно внести, дописав ( >> ) в файл дату с помощью перенаправления вывода команды date . Посмотрите содержимое файла, воспользовавшись первым именем файла. Тем самым вы убедитесь, что имеете дело с одним и тем же файлом, доступным под разными именами.

Создайте символьную ссылку на каталог. Посмотрите в графической оболочке, как дистрибутив Linux по особому обозначает такой объект (обычно у иконки появляется маленькая черная стрелка).

Курс с ответами к заданиям и дополнительными уроками в PDF

X Скрыть Наверх

Введение в Linux и Bash. Курс

Жесткие и символьные ссылки

Для пользователя файл – это область данных на диске, к которой он обращается через имя файла. Однако в операционных системах на базе ядра Linux вся информация о файле привязана не к его имени, а так называемому числовому индексному дескриптору. У каждого файла есть свой уникальный индексный дескриптор, к которому привязаны сведения об этом файле: в каких блоках диска хранится его содержимое, размер, время создания, модификации и др.

Индексные дескрипторы файлов хранятся в специальной таблице. Каждый логический и физический диск имеет собственную таблицу дескрипторов.

Именно номер индекса является истинным именем файла в системе. Мы можем его увидеть с помощью ключа -i команды ls .

Как увидеть индексный дескриптор с помощью команды ls

Жесткие ссылки

Поскольку индексные дескрипторы представляют собой номера, а файлов в операционной системе очень много, то искать файл по его индексу было бы неудобно: человеку работать с осмысленными словами куда проще, чем с длинными числами. Поэтому любому файлу в системе обычно дается осмысленное словесное имя, которое не содержит информации о файле, а лишь указывает, то есть ссылается, на его дескриптор.

Имя файла, ссылающееся на его индексный дескриптор, называется жесткой ссылкой. Механизм жестких ссылок – это основной способ обращения к файлам в Unix-подобных операционных системах.

Поскольку файл в операционной системе однозначно определяет только номер его дескриптора, а имя файла является лишь указателем-ссылкой на него, то очевидно таких ссылок можно создать множество. Все они будут указывать на один объект. Результатом этого является то, что у файла в Linux может быть несколько имен.

Для образного сравнения, представим придорожные указатели на определенную бензоколонку: их много, они находятся в разных местах трассы, но указывают на одну и туже точку местности.

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

Следствием механизма жестких ссылок Linux является то, что удаление жесткой ссылки на файл не приводит к удалению самого файла из системы при наличии у этого файла других жестких ссылок (имен файла). И это понятно, так как все жесткие ссылки равны между собой, независимо от времени создания, местонахождения в структуре каталогов.

Файл будет доступен системе, пока будет существовать хотя бы одна жесткая ссылка на него. В случае удаления всех ссылок, файл удалится из системы, так как станет просто недоступен.

Символьные, или мягкие, ссылки

Несмотря на возможности, которые предоставляют жесткие ссылки, у них есть ограничения:

  • их можно создавать только на файлы, но не на каталоги;
  • жесткую ссылку нельзя создать на файл, находящийся на другом диске.

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

Поэтому в операционных системах GNU/Linux поддерживается также механизм мягких ссылок. Часто их называют символьными ссылками. Они представляют собой файлы, указывающие не на индексные дескрипторы, а на имена файлов, то есть на жесткие ссылки. Мягкая ссылка в Linux аналог ярлыка в Windows.

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

На рисунке изображена связь между символьными ссылками и именами файла, а также между именами и индексным дескриптором. Верхний квадрат соответствует индексному дескриптору файла, квадраты со скругленными углами – именам файла, а круги – символьным ссылкам. Индексный дескриптор файла всегда один, а имен может быть множество. Также может существовать неограниченное количество символьных ссылок на каждое имя файла.

При удалении жесткой ссылки, на имя которой ссылалась символьная, последняя не наследует связь с дескриптором и утрачивает свою работоспособность. Если в данном примере удалить жесткую ссылку с именем logotip , то файлы pic1 и tux станут бесполезны, так как открыть файл 555795 с их помощью уже будет нельзя.

Жесткая ссылка – не копия!

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

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

На практике это приводит к следующему. При внесении изменений в файл, обращение к которому было под одним именем, эти изменения обнаружатся и тогда, когда обращение к файлу произойдет под другим именем. При создании копии файла и последующем изменении данных этой копии, данные первоначального файла, с которого «снималась» копия, не изменятся.

В случае мягких ссылок, хоть и создается новый файл (с собственным индексным дескриптором), он не содержит данных файла-оригинала, а лишь содержит запись адреса другого файла. Символьная ссылка – особый тип файла Linux.

При выполнении команды ls с ключом -l во втором столбце выводится количество жестких ссылок на файловый объект. Обычно по-умолчанию на каждый файл существует одна жесткая ссылка. Подумайте, что может означать количество жестких ссылок для каталогов?

Количество жестких ссылок на каталоги

Курс с ответами к заданиям и дополнительными уроками в PDF

X Скрыть Наверх

Введение в Linux и Bash. Курс

Символические и жесткие ссылки в Linux. Команда ln

Символические и жесткие ссылки в Linux. Команда ln

Что такое символические и жесткие ссылки в Linux. Чем они отличаются. Как создавать ссылки. Использование команды ln.

Оглавление

  • Что такое ссылка на файл в Linux
    • Что такое символические ссылки
    • Что такое жесткие ссылки
    • Отличия символических ссылок от жестких

    Что такое ссылка на файл в Linux

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

    Ссылки в Linux бывают двух типов: символические и жесткие. Не смотря на то, что оба типа называются ссылками, они имеют существенные отличия друг от друга. Поэтому очень важно понимать, как создавать и использовать тот или иной тип ссылок.

    Что такое символические ссылки

    Символическая ссылка (symbolic link) — это специальный файл, который является ссылкой на другой файл или каталог (их еще называют целевым файлом, целевым каталогом).

    Символические ссылки также называют символьными, мягкими ссылками (soft links) или сим-ссылками (sym-link).

    Важно понимать, что символическая ссылка не содержит в себе внутри копии самого файла, на которую она указывает. Она является всего лишь указателем на файл. Не смотря на это, символическая ссылка обладает собственными правами доступа, так как сама является небольшим файлом, который содержит путь до целевого файла.

    Возвращаясь к аналогии с ярлыками в Windows, символические ссылки это своего рода ярлыки на файлы. Можно создавать несколько символических ссылок на один файл и эти ссылки могут иметь разные имена.

    Связь между символической ссылкой и файлом, на который она указывает, является «мягкой». Если удалить символическую ссылку, то файл, на который она указывает, не удаляется.

    Если удалить файл, на который указывает ссылка, то сама ссылка не обновляется и остается на диске. При этом она указывает на уже несуществующий файл. Аналогично, если переименовать или переместить целевой файл, то ссылка не обновляется автоматически.

    При создании символических ссылок можно указывать относительный путь до целевого файла. В таком случае ссылка считает, что относительный путь указан относительно каталога, в котором создана сама ссылка (но не относительно каталога, из которого она была создана).

    Символическая ссылка в Linux

    Схематично отношение между файлом, символической ссылкой и данными, которые хранятся в файле, можно показать следующим образом:

    Что такое жесткие ссылки

    Жесткая ссылка (hard link) является своего рода синонимом для существующего файла. Когда вы создаете жесткую ссылку, создается дополнительный указатель на существующий файл, но не копия файла.

    Жесткие ссылки выглядят в файловой структуре как еще один файл. Если вы создаете жесткую ссылку в том же каталоге, где находится целевой файл, то они должны иметь разные имена. Жесткая ссылка на файл должна находится в той же файловой системе, где и другие жесткие ссылки на этот файл.

    В Linux каждый файл имеет уникальный идентификатор — индексный дескриптор (inode). Это число, которое однозначно идентифицирует файл в файловой системе. Жесткая ссылка и файл, для которой она создавалась имеют одинаковые inode. Поэтому жесткая ссылка имеет те же права доступа, владельца и время последней модификации, что и целевой файл. Различаются только имена файлов. Фактически жесткая ссылка это еще одно имя для файла.

    Жесткие ссылки нельзя создавать для директорий.

    Жесткая ссылка не может указывать на несуществующий файл.

    Жесткие ссылки появились раньше, чем символические, но сейчас уже устаревают. В повседневной работе жесткие ссылки используются редко.

    Жесткая ссылка в Linux

    Схематично отношение между исходным файлом, жесткой ссылкой и данными можно показать следующей схемой:

    Отличия символических ссылок от жестких

    Кратко подведем итог, написанного выше.

    Символическая ссылка:

    • Указывает на целевой файл или каталог. Фактически является небольшим файлом, содержащим путь до целевого файла.
    • Не содержит внутри себя содержимого самого файла. Содержит путь к целевому файлу.
    • Имеет собственные права доступа, которые не распространяются на целевой файл.
    • Удаление / переименование / перемещение целевого файла не обновляет автоматически ссылку. Ссылка начинает указывать на несуществующий файл, становится неработающей.
    • Изменение прав доступа у целевого файла не обновляет права доступа у ссылки.
    • Может быть создана для директории.
    • Ссылка и целевой файл имеют разные файловые индексы (inode) в файловой системе.
    • Может указывать на несуществующий файл.
    • Символическая ссылка может использовать относительный путь до целевого файла.

    Жесткая ссылка:

    • Является своего рода еще одним именем на файл.
    • Не может указывать на директорию.
    • Нельзя создавать жесткие ссылки между файлами разных файловых систем.
    • Не может указывать на несуществующий файл.
    • Жесткая ссылка и файл, для которого она создавалась, имеют одинаковые индексы (inode) в файловой системе.

    Как создавать ссылки в Linux. Команда ln

    Для создания ссылок в Linux используется команда ln (от слова link).

    Синтаксис команды ln :

    ln опции целевой_файл имя_ссылки

    Обычно используется только одна опция -s . Полный список опций можно получить, выполнив команду man ln.

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

    Чтобы создать символическую ссылку, нужно выполнить команду ln с опцией -s :

    ln -s целевой_файл имя_символьной_ссылки

    Например, создадим в текущем каталоге символическую ссылку с именем mylink на файл /home/pingvinus/myfile :

    ln -s /home/pingvinus/myfile.txt mylink

    Выполнив команду ls -li , можно увидеть, что ссылка myfile указывает на файл /home/pingvinus/myfile

    ls -li 792300 -rw-rw-r-- 1 pingvinus pingvinus 13 фев 13 13:07 myfile.txt 787622 lrwxrwxrwx 1 pingvinus pingvinus 10 фев 13 13:08 mylink -> /home/pingvinus/pingvinus/myfile

    Обратите внимание, что ссылка и целевой файл имеют разные inode (792300 и 787622. См. число в начале строки).

    Если теперь удалить целевой файл, а затем попробовать просмотреть его содержимое, используя ссылку, то получим сообщение о том, что файл не найден:

    rm myfile.txt ls -li 787622 lrwxrwxrwx 1 pingvinus pingvinus 10 фев 13 13:08 mylink -> /home/pingvinus/pingvinus/myfile cat mylink cat: mylink: Нет такого файла или каталога

    Символическая ссылка, команда ln -s

    Пример создания и использования символьной ссылки (при создании ссылки используется относительный путь до целевого файла, если такую ссылку переместить, то она будет невалидна):

    Создание жестких ссылок

    Чтобы создать жесткую ссылку нужно использовать команду ln без опции -s .

    ln целевой_файл имя_жесткой_ссылки

    Например, создадим жесткую ссылку с именем hardlinktofile на файл myfile.txt :

    ln myfile.txt hardlinktofile

    Выведем список файлов:

    ls -li 787622 -rw-rw-r-- 2 pingvinus pingvinus 13 фев 13 13:19 hardlinktofile 787622 -rw-rw-r-- 2 pingvinus pingvinus 13 фев 13 13:19 myfile.txt

    Можно заметить, что hardlinktofile и myfile.txt имеют одинаковый inode=787622, так как являются фактически разными именами для одного файла (inode которого 787622).

    Также видно, что на данный inode имеется 2 ссылки (см. цифру 2 в 3-м столбце). Если мы удалим исходный файл, то количество ссылок на него уменьшается на 1, то есть на самом деле файл не удаляется, так как на него больше, чем 1 ссылка. И мы по прежнему можем работать с файлом по имени hardlinktofile.

    rm myfile.txt ls -li 787622 -rw-rw-r-- 1 pingvinus pingvinus 13 фев 13 13:19 hardlinktofile cat hardlinktofile Hello World!

    Обратите внимание, что после выполнения команды rm, количество ссылок на файл стало равно 1.

    Создание жесткой ссылки в Linux

    Пример создания и использования жесткой ссылки:

    Как удалить ссылку

    Ссылки, как и обычные файлы, можно удалять, используя команду rm :

    rm имя_ссылки

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

    Некоторые графические файловые менеджеры поддерживают создание символических ссылок. Чтобы создать символическую ссылку в таком файловом менеджере, достаточно кликнуть правой кнопкой мыши по файлу и выбрать в меню пункт Создать ссылку ( Create Link , Make Link ).

    Ссылка создается в том же каталоге, где находится целевой файл. После создания ссылку можно переместить в другой каталог.

    Резюме

    Ссылки — это удобный инструмент при работе с файлами в Linux. Мы рассмотрели два вида ссылок, которые существуют в Linux. Рассмотрели отличия символических ссылок от жестких. Для создания ссылок используется команда ln . При повседневной работе обычно используются символические ссылки, в то время как жесткие ссылки используются редко.

    Символические ссылки: основы работы

    Символическая ссылка (симлинк, англ. symbolic link, symlink) позволяют связывать файлы и каталоги с другими файлами и каталогами. У таких ссылок есть много названий: их называют ссылками оболочки, программными или «мягкими» ссылками, ярлыками и псевдонимамами. С точки зрения пользователя символические ссылки очень похожи на обычные файлы и каталоги. Однако, взаимодействуя с ними, вы фактически взаимодействуете с целевым объектом на другом конце ссылки. Поэтому симлинк проще всего представить в виде червоточины в вашей файловой системе.

    В этом руководстве мы поговорим о том, что такое символические ссылки и как их создавать с помощью командной строки Linux и команды ln.

    Требования

    Чтобы следовать этому руководству, вам потребуется доступ к компьютеру с операционной системой Linux. Подойдет и виртуальный сервер, к которому вы подключаетесь через SSH, и просто ваш локальный компьютер. Обратите внимание: мы проверили данный мануал на сервере Ubuntu 20.04, но приведенные в нем команды и примеры должны работать на компьютерах с любой версией любого дистрибутива Linux.

    Если для выполнения инструкций вы планируете использовать свежий удаленный сервер, мы рекомендуем вам сначала подготовить сервер к работе с помощью этого материала. Вы узнаете, как настроить безопасную серверную среду, в том числе пользователя sudo и брандмауэр UFW.

    Создание тестовой файловой системы

    Системный вызов, необходимый для создания символических ссылок, обычно доступен в Unix-подобных и POSIX-совместимых операционных системах. Для создания ссылок мы будем использовать команду ln.

    Чтобы попрактиковаться в создании символических ссылок, вы, конечно, можете использовать уже существующие в системе файлы. Однако мы рекомендуем создать специальную тестовую среду, в которой вы сможете попрактиковаться без ущерба для своей текущей файловой системы. В этом разделе вы найдете несколько команд, которые помогут вам подготовить такую среду.

    Для начала давайте создадим в каталоге /tmp/ пару новых каталогов. Каталог /tmp/ предназначен для временных (temporary) файлов, то есть все хранящиеся здесь файлы и каталоги будут удалены при следующей загрузке сервера. Это очень удобно: вы можете создать столько каталогов, файлов и ссылок, сколько захотите, и не беспокоиться о том, что впоследствии они засорят систему.

    Следующая команда mkdir создает сразу три каталога: сначала каталог symlinks/ внутри /tmp/, а затем – каталоги one/ и two/ внутри symlinks/.

    mkdir -p /tmp/symlinks/

    Перейдите в новый каталог symlinks/:

    Создайте здесь пару тестовых файлов, по одному в каждом из подкаталогов внутри symlinks/. Следующая команда создает в подкаталоге one/ файл one.txt, единственным содержимым которого является строка one:

    echo «one» > ./one/one.txt

    Аналогично, следующая команда создает в подкаталоге two/ файл two.txt, который содержит только строку two:

    echo «two» > ./two/two.txt

    Если на этом этапе запустить команду tree, чтобы отобразить содержимое каталога /tmp/symlinks и всех вложенных подкаталогов, мы получили бы такой вывод:

    . ├── one │ └── one.txt └── two └── two.txt 2 directories, 2 files

    Примечание: Если команда tree не установлена на вашем компьютере по умолчанию, вы можете установить ее с помощью стандартного менеджера пакетов вашей системы. Например, в Ubuntu установить ее можно с помощью apt:

    sudo apt install tree

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

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

    Жесткая ссылка – это зеркальная копия исходного файла с точно таким же содержимым.

    Допустим, у вас есть текстовый файл. Если вы отредактируете содержимое исходного файла, эти изменения отразятся в жесткой ссылке. Однако если вы удалите исходный файл, жесткая ссылка все равно будет работать, и вы сможете просматривать и редактировать ее, как обычную копию исходного файла. Создавая символическую ссылку на этот файл, вы по сути получаете только указатель на исходный файл. Если вы удалите исходный файл, символическая ссылка сломается, так как больше она никуда не ведет.

    Жесткие ссылки широко применяются, но в некоторых случаях их следует избегать. Например, избегать их нужно внутри репозитория git, поскольку они могут создать путаницу.

    По умолчанию команда ln создает жесткие ссылки. Чтобы с ее помощью создать симлинк, команде ln нужно передать параметр -s (или –symbolic).

    Примечание: Поскольку символические ссылки используются чаще, чем жесткие, вы можете сразу создать псевдоним для команды ln -s:

    Конечно, это сэкономит вам всего несколько нажатий клавиш, но если вы создаете много символических ссылок, это может значительно упростить вам работу.

    Работа с символическими ссылками

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

    Одним из возможных вариантов использования симлинков является создание в домашнем каталоге пользователя локальных каталогов, указывающих на файлы, синхронизируемые с внешним приложением, например Dropbox. Еще один вариант – создать символическую ссылку, указывающую на последнюю сборку проекта, которая находится в каталоге с динамическим именем.

    На примере файлов и каталогов (мы создали их в первом разделе) попробуйте создать символическую ссылку по имени three, которая указывает на каталог one:

    Теперь у вас должно быть 3 каталога, один из которых указывает на другой. Чтобы получить более подробный обзор текущей структуры каталогов, вы можете использовать команду ls и вывести содержимое текущего рабочего каталога:

    one three two

    Теперь в каталоге symlinks/ есть три каталога. В зависимости от вашей системы это может означать, что каталог three на самом деле является символической ссылкой. Иногда в выводе имя ссылки выделяется другим цветом или к нему добавляется символ @.

    Для большей детализации вывода вы можете передать команде ls аргумент -l, чтобы определить, куда на самом деле указывает символическая ссылка:

    На экране появится:

    total 8 drwxrwxr-x 2 8host 8host 4096 Oct 30 19:51 one lrwxrwxrwx 1 8host 8host 3 Oct 30 19:55 three -> one drwxrwxr-x 2 8host 8host 4096 Oct 30 19:51 two

    Обратите внимание, ссылка three указывает на каталог one, как и ожидалось. Кроме того, в выводе его имя начинается с l, что указывает на то, что это ссылка. Два других элемента начинаются с d, что означает, что это обычные каталоги.

    Символические ссылки также могут содержать символические ссылки. В качестве примера давайте попробуем связать файл one.txt из каталога three с каталогом two:

    ln -s three/one.txt two/one.txt

    Теперь у вас должен быть файл one.txt внутри каталога two. Вы можете проверить это с помощью следующей команды ls:

    total 4 lrwxrwxrwx 1 8host 8host 13 Oct 30 19:58 one.txt -> three/one.txt -rw-rw-r-- 1 8host 8host 4 Oct 30 19:51 two.txt

    В зависимости от конфигурации вашего терминала ссылка (выделенная выше) может отображаться в красном цвете, что указывает на то, что она не работает. Хотя ссылка и была создана, но для ее создания использовался относительный путь. Ссылка не работает, потому что каталог two не содержит каталога three с файлом one.txt в нем.

    К счастью, вы можете исправить эту ситуацию при помощи команды ln. Она может создать симлинк относительно расположения ссылки с помощью аргумента -r (или –relative).

    Однако даже с флагом -r вы не сможете исправить неработающую символическую ссылку. Причина ошибки в том, что символическая ссылка уже существует, и вы не сможете перезаписать ее, не добавив аргумент -f (или –force):

    ln -srf three/one.txt two/one.txt

    Теперь у вас есть файл two/one.txt, он связан с three/one.txt, который является ссылкой на one/one.txt.

    Вложение символических ссылок может быстро превратиться в путаницу, но многие приложения умеют делать подобные структуры ссылок более понятными. Например, команда tree покажет, что отображаемая цель ссылки на самом деле соответствует расположению исходного файла, а не самой ссылке:

    . ├── one │ └── one.txt ├── three -> one └── two ├── one.txt -> ../one/one.txt └── two.txt 3 directories, 3 files

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

    Чтобы понять, что содержат ваши файлы, выполните следующую команду cat.

    Она выведет на экран содержимое файла one.txt в каждом из трех каталогов, созданных вами в этом руководстве:

    one one one

    Затем обновите содержимое исходного файла one.txt в каталоге one/:

    echo «1. One» > one/one.txt

    Снова проверьте содержимое каждого файла:

    Вы получите такой результат:

    1. One 1. One 1. One

    Эти данные подтверждают, что любые изменения, внесенные в исходный файл, будут немедленно отражены в симлинках.

    Теперь попробуем сделать обратное – изменить содержимое одной из символических ссылок. Выполните следующую команду, чтобы изменить содержимое файла one.txt в каталоге three/:

    echo «One and done» > three/one.txt

    Затем еще раз проверьте содержимое каждого файла:

    На экране появится:

    One and done One and done One and done

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

    Заключение

    Символические ссылки невероятно полезны, но у них есть определенные ограничения. Имейте в виду: если вы переместите или удалите исходный файл или каталог, все существующие симлинки, указывающие на него, будут повреждены. Этот сценарий не предлагает автоматического обновления или исправления. Однако если вы будете работать осторожно, вы найдете символическим ссылкам множество применений.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *