Перейти по ссылке linux

Обновлено: 06.07.2024

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

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

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

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

Вот основные особенности символических ссылок:

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

Теперь давайте рассмотрим жесткие ссылки.

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

Этот тип ссылок реализован на более низком уровне файловой системы. Файл размещен только в определенном месте жесткого диска. Но на это место могут ссылаться несколько ссылок из файловой системы. Каждая из ссылок - это отдельный файл, но ведут они к одному участку жесткого диска. Файл можно перемещать между каталогами, и все ссылки останутся рабочими, поскольку для них неважно имя. Рассмотрим особенности:

  • Работают только в пределах одной файловой системы;
  • Нельзя ссылаться на каталоги;
  • Имеют ту же информацию inode и набор разрешений что и у исходного файла;
  • Разрешения на ссылку изменяться при изменении разрешений файла;
  • Можно перемещать и переименовывать и даже удалять файл без вреда ссылке.

Использование ссылок в Linux

Теоретические отличия вы знаете, но осталось закрепить все это на практике, поэтому давайте приведем несколько примеров работы со ссылками в Linux. Для создания символических ссылок существует утилита ln. Ее синтаксис очень прост:

$ ln опции файл_источник файл_ссылки

Рассмотрим опции утилиты:

  • -d - разрешить создавать жесткие ссылки для директорий суперпользователю;
  • -f - удалять существующие ссылки;
  • -i - спрашивать нужно ли удалять существующие ссылки;
  • -P - создать жесткую ссылку;
  • -r - создать символическую ссылку с относительным путем к файлу;
  • -s - создать символическую ссылку.

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

Сначала создайте папку test и перейдите в нее:

mkdir test && cd test


Затем создайте файл с именем source с каким-либо текстом:

echo "текст текст текст текст" > source
$ cat source


Файл готов, дальше создадим символическую ссылку Linux, для этого используется команда ln с опцией -s:

ln -s source softlink


Попробуем посмотреть содержимое файла по ссылке:


Как видите, нет никакой разницы между ней и исходным файлом. Но утилита ls покажет что это действительно ссылка:


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

Теперь удалите исходный файл и посмотрите что будет:


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

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

Снова создайте файл source с произвольным текстом:

echo "текст текст текст текст" > source
$ cat source


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

ln source hardlink

Посмотрите содержимое файла:


Данные те же самые, а если мы посмотрим вывод утилиты ls, то увидим что inode и права доступа тоже совпадают:


Если для одного из файлов поменять разрешения, то они изменяться и у другого. Теперь удалите исходный файл:

Затем посмотрите содержимое:


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

Выводы

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

На завершение видео про ссылки в Linux:

Большинство пользователей, когда размышляют о серфинге в интернете, подразумевают "графический интерфейс". Действительно, в X11 есть много прекрасных программ, таких как Firefox или Chrome. Однако, и консоль не такая уж пустошь, как это может показаться. В консоли есть много утилит для веб-серфинга и для загрузки или выгрузки веб-контента.

Допустим, что вы хотите найти в интернете некоторый контент. Первой утилитой, на которую стоит взглянуть и которая также является одной из старейших утилит, это - почтенный Lynx. Lynx, в действительности, был первым моим веб-браузером, который работал на машине, где не смогла работать система X11. Обычно вы просто запускаете его в командной строке и подаете ему имя файла или URL. Так что если вы хотите попасть на Google, нужно выполнить следующую команду:

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

Если вы ищете строго текстовую замену почтенному Lynx, то есть браузер ELinks. В ELinks поддерживаются цвета, рендеринг таблиц, фреймы, загрузка в фоновом режиме и просмотр с вкладками. Одним из возможно полезных параметров будет -anonymous 1. Между прочим, этот параметр отключается при просмотре файлов и уже загруженных страниц, хранящихся в локальном компьютере. Еще один интересный параметр -lookup. Когда он используется, ELinks указывает для заданного доменного имени все IP адреса.

Теперь вы знаете, как в командной строке просматривать веб-контент. А как можно взаимодействовать с веб-сайтом? В действительности, я спрашиваю о том, как загружать контент на веб и как его оттуда сгружать. Допустим, вы хотите иметь локальную копию контента, скачанного из сети, которую вы сможете просмотреть, когда отдыхаете на берегу озера, где нет доступа в интернет. Для этого вы можете использовать утилиту curl. Утилита curl может передавать данные на сервер и с сервера по протоколам HTTP, FTP, SFTP и даже LDAP. Она позволяет использовать HTTP-метод POST, соединения с SSL и куки. Когда вы пользуетесь формой, то можете с помощь параметра -F name=value указывать пары "name/value", и веб-сервер будет считать, что вы в форме задали параметры. Одной из очень интересных особенностей является возможность использовать несколько адресов URL и указывать их в виде диапазона. Например, вы можете указать несколько хостов следующим образом:

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

будет выполнена загрузка с сайтов от text1.html и до text10.html.

А что делать, если вы хотите получить копию всего сайта, а затем просмотреть его, когда вы не подключены к сети? Здесь вам поможет утилита wget. В данном случае вам, вероятно, нужно будет использовать следующую команду:

Если вы загружаете контент на веб, используйте wput. wput позволяет загружать контент с помощью FTP, интерфейс такой же, как и у wget.

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

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


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

Что такое ссылка на файл в 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 :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме

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

Есть ли способ перейти по ссылкам, указанным на странице руководства? Например, вот справочная страница для ps ; как получить доступ к ссылке, отмеченной красным?

Снимок экрана с man-страницей ps

Здесь «онлайн» означает «на компьютере» (в отличие от «на бумаге»), а не «в Интернете». «On-Line»: Вы можете вспомнить те квестовые «приключенческие» игры для ПК, которые были выпущены компанией (тогда) под названием Sierra On-Line. Справочные страницы . Лучший способ просмотреть справочные страницы - использовать ваш редактор. Таким образом, навигация, поиск (и т. Д.) Текста будет настолько плавным, что каждый ярлык уже давно остается в вашей мышечной памяти. Также, скажем, вы работаете над проектом по программированию - вы можете скопировать страницы руководства в свой код. Не что иное, как бесшовное взаимодействие. Проверьте это и мой комментарий к @Gilles " ответ .

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

    , программа просмотра графических страниц с гиперссылками ( вики , man-сравнение , ранее ), браузер man-страниц для Emacs, поддерживающий гиперссылки , конвертер человек в HTML (плюс веб-браузер, чтобы прочитать результат)

Вы можете просматривать справочные страницы нескольких операционных систем, преобразованных в HTML с помощью man2html аналогичных инструментов, на нескольких сайтах в Интернете, например:

Через некоторое время после того, как man-страницы стали общепринятым форматом документации в Unix, а за некоторое время до изобретения Интернета, проект GNU представил формат информационной документации, более продвинутый, чем man, придерживаясь простой разметки, предназначенной для текстовых терминалов. Основным нововведением информации по сравнению с человеком было создание многостраничной документации с гиперссылками на другие страницы. Информация по-прежнему является предпочтительным форматом документации для проектов GNU, хотя большинство страниц Info генерируются из источника Texinfo (или иногда из других форматов), который также может генерировать HTML. Когда существует информационная документация для программы, она часто является основным руководством, тогда как справочные страницы содержат только основную информацию об аргументах командной строки.

Читайте также: