Команда ln в Linux

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

Ссылки на файл в Linux

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

Символические ссылки

Символическая ссылка — файл определенного типа, который выступает в роли линка на другой объект — файл любого формата или определенный каталог. Обычно такие объекты называют целевыми. Иногда вы можете заметить, что такой тип ссылок называют soft links или sym-link. Такой элемент не содержит в себе данных цели, а лишь выступает указателем, то есть является полной копией ярлыка из Виндовс. Внутри symbolic link находится только путь. Никто не запрещает вам создать множество подобных линков с разными именами, но одним и тем же целевым объектом. Связь между двумя составляющими называется мягкой, поскольку при удалении ссылки целевой файл никаким образом не страдает. Однако при удалении файла ссылка становится нерабочей. Она сохраняется на диске, но указанный в ней путь ведет уже к несуществующему объекту.

Схематическое изображение символической ссылки в Linux

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

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

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

Схематическое изображение жесткой ссылки в Linux

Важно отметить, что линк будет иметь точно такой же идентификатор (inode), как и целевой файл. Как известно, у всех объектов свои уникальные номера. Из-за этого между ними будет различие только в именах. Все права, владелец и даты изменений сохраняются. Можно сказать, что жесткая ссылка — еще одно название для объекта. При удалении целевого файла линк все равно будет хранить информацию, которая находилась в нем, поскольку на содержимое остается еще один указатель.

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

Перейдем от теории к практике и поговорим о главной теме статьи — команде ln. Как вы уже знаете, она используется для создания двух типов ссылок. Однако стоит заметить, что некоторые файловые менеджеры имеют встроенную функцию по добавлению символического линка. Для этого нужно щелкнуть ПКМ по файлу или папке и выбрать пункт «Создать ссылку», «Create Link» или «Make Link». Тогда soft link будет помещен в этот же каталог, а вы можете переместить его в любое другое место на накопителе.

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

  1. Запустите файловый менеджер любым удобным методом, например, перейдя в домашнюю папку через значок на рабочем столе.
  2. Открытие файлового менеджера для дальнейшего перехода в папку Linux

  3. Здесь отыщите в каталогах необходимый файл или папку, через правый клик мыши выберите пункт «Свойства».
  4. Открытие окна свойств файла для определения родительской папки в Linux

  5. В разделе «Основные» вы найдете расположение родительской папки, добавьте к нему название элемента, чтобы получить полный путь, например, /home/user/folder/file_name.
  6. Определение родительской папки файла через файловый менеджер в Linux

  7. Если вы собираетесь создавать несколько линков для файлов из одной директории, советуем перейти к ней через «Терминал». Делается это путем ввода cd /home/user/folder. Такое действие позволит указывать только относительный путь к объекту.
  8. Переход по определенному расположению через cd в Linux

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

Рассмотрим утилиту ln в действии. Начнем с создания символической ссылки на файл. Для этого воспользуйтесь стандартной консолью и выполните такие действия:

  1. Впишите ln -s file slink, где file — имя или полный путь к файлу или директории, а slink — название ссылки. Она будет помещена в тот же каталог, где и находится целевой объект.
  2. Создание символической ссылки в операционной системе Linux

  3. Введите и активируйте ls -li, чтобы увидеть информацию по поводу находящихся в каталоге объектов. Символическая ссылка выделена отдельным цветом, а через -> указана ее цель. Как видите, файл и линк имеют разные идентификаторы и права.
  4. Просмотр зависимости символической ссылки и файла в Linux

  5. Для наглядности удалим целевой элемент через rm.
  6. Удаление целевого файла в операционной системе Linux

  7. После повторного просмотра списка содержимого, вы увидите, что символический линк теперь испорчен и не работает, поскольку целевой объект был удален.
  8. Просмотр символической ссылки после удаления целевого файла Linux

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

Читайте также: Примеры команды ls в Linux

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

Создание жесткой ссылки во многом похоже с тем типом, который мы рассмотрели выше. Единственное различие заключается в отсутствии опции -s. Тогда вся процедура будет иметь примерно такой вид:

  1. Введите и активируйте ln file hlink.
  2. Создание жесткой ссылки через терминал в Linux

  3. Снова используйте ls -li, чтобы убедиться в наличии связки жесткого линка и файла. Как видите, они имеют одинаковый идентификатор, права и остальные метаданные. Разные лишь имена.
  4. Просмотр содержимого папки с жесткой ссылкой в Создание жесткой ссылки через терминал в Linux

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

  7. Задействуйте команду cat, чтобы просмотреть содержимое жесткого линка. В консоли отобразится та же информация, что изначально хранилась в исходном файле.
  8. Просмотр содержимого жесткой ссылки в Linux

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

Читайте также: Примеры команды cat в Linux

Выше вы были ознакомлены не только со стандартной командой ln, но и узнали о двух типах доступных ссылок на объекты в Linux. Конечно, чаще бывают задействованы символические линки, но жесткие тоже иногда становятся полезными. О других популярных командах в Линукс можете узнать из нашего отдельного материала.

Читайте также: Часто используемые команды в «Терминале» Linux

Автор статьи Виктор Бухтеев Вам помогли мои советы?
Получить ответ на Email
Уведомить о

1 Ответ
По рейтингу
Новые Старые
Межтекстовые Отзывы
Посмотреть все комментарии
Аноним
23 октября 2023 21:05

Спасибо! Помог! Ураааа)))) Вы компьютерные гении

Рекомендуем: