Как создать ссылку в Linux

В вашей файловой системе Linux ссылка — это связь между именем файла и фактическими данными на диске. Существует два основных типа ссылок: «жесткие» ссылки и «мягкие» или символические ссылки. Жесткие ссылки — это низкоуровневые ссылки, которые система использует для создания элементов самой файловой системы, таких как файлы и каталоги.

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

Символическая ссылка — это отдельный файл, но он не содержит копию данных целевого файла. Это похоже на ярлык в Microsoft Windows: если вы удалите символическую ссылку, цель не изменится. Кроме того, если цель символической ссылки удалена, перемещена или переименована, символическая ссылка не обновляется. Когда это происходит, символическая ссылка называется «неработающей» или «осиротевшей» и больше не будет функционировать как ссылка.

Как создать символические ссылки с помощью файлового менеджера

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

Создание символических ссылок с помощью файлового менеджера Linux

В примере, показанном выше, с помощью файлового менеджера Thunar мы выделили файл myfile.txt, затем выбрали «Создать ссылку …» в меню «Правка». После завершения создается новая символическая ссылка, которая называется ссылка на myfile.txt. Эта ссылка может быть переименована или перемещена в другое место, и она всегда будет указывать на нашу цель (если только цель не будет впоследствии перемещена или удалена, в этом случае ссылка станет потерянной).

Как создать символические ссылки из командной строки

Командная строка является мощным инструментом в Linux, потому что дает вам больший контроль над вашими командами. (Для получения дополнительной информации о командной строке и о том, как получить к ней доступ из Linux, см. Наш учебник по оболочке Linux и Unix).

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

ln -s целевое имя ссылки

Например, если у нас есть файл в нашем рабочем каталоге с именем myfile.txt, и мы хотим создать символическую ссылку в том же каталоге с именем mylink, мы могли бы использовать команду:

ln -s myfile.txt mylink

Посмотрим, как это будет выглядеть в командной строке. Здесь мы открыли сеанс терминала, который помещает нас в командную строку нашей оболочки. Мы вошли в систему с именем myhost как пользователь с именем user, и наш рабочий каталог — это папка в нашем домашнем каталоге, которая называется myfolder:

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

вывод команды: ls -l

Мы видим наш файл myfile.txt, который является единственным файлом в каталоге. («Всего 4» относится к тому, сколько блоков на диске используется перечисленными файлами, а не к общему количеству файлов).

Давайте использовать команду cat для просмотра содержимого myfile.txt:

вывод команды: cat myfile.txt

Теперь давайте создадим символическую ссылку на mylink.txt с именем mylink с помощью команды ln -s:

ln -s myfile.txt mylink

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

Теперь, если мы выполним еще один ls -l, мы увидим два файла — нашу цель и нашу ссылку:

вывод команды: ls -l, отображение ссылки и цели

Одним из преимуществ создания длинного списка с «-l» является то, что мы видим дополнительную информацию в дополнение к имени файла. Обратите внимание на «l» в начале строки, содержащей имя нашей ссылки, указывающее, что файл является символической ссылкой. Также обратите внимание, что после mylink стоит символ «->», за которым следует имя цели. В нашем примере выше, цвет синий; большинство оболочек по умолчанию настроены на отображение файлов определенных типов в разных цветах, но ваш терминал может отображать разные цвета или вообще не отображать их.

Теперь давайте воспользуемся нашей символической ссылкой. Если мы запустим на нем команду cat, она отобразит содержимое файла myfile.txt:

вывод команды cat

Мы можем переименовать нашу ссылку с помощью mv, и она все еще указывает на ту же цель:

Переименованные символические ссылки по-прежнему функционируют должным образом.

Но что произойдет, если мы переместим нашу ссылку куда-нибудь еще? В этом случае наша ссылка будет разорвана. Мы можем убедиться в этом, создав новый каталог с помощью mkdir и переместив ссылку в новый каталог с помощью mv:

Перемещение ссылки в другое место нарушает ее, поскольку в ссылке не указан абсолютный путь

Вы можете видеть, что когда мы просматриваем содержимое папки newfolder с помощью ls -l, наша ссылка выделяется красным, указывая, что это неработающая ссылка. Если мы попытаемся отследить содержимое ссылки, оболочка сообщит нам, что файл не существует. Он указывает на «myfile.txt» без другой информации о пути. Поэтому операционная система всегда будет искать файл myfile.txt в том же каталоге, что и ссылка.

Давайте начнем с удаления новой папки и ее содержимого с помощью команды rm -r:

начать сначала

На этот раз давайте создадим символическую ссылку, используя абсолютный путь к myfile.txt. Давайте дважды проверим имя нашего рабочего каталога с помощью pwd:

вывод команды pwd

Наш рабочий каталог — / home / user / myfolder, поэтому давайте включим его в целевое имя при создании ссылки:

Создание символической ссылки с использованием абсолютного пути в имени цели.

Как вы можете видеть из вывода ls -l, наша ссылка теперь указывает на файл /home/user/myfolder/myfile.txt. С помощью этой информации о пути мы можем переместить ссылку в другое место, и она все равно будет указывать на нашу цель:

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

Чаевые

В вашей оболочке bash хранится переменная среды $ PWD, в которой всегда хранится значение вашего рабочего каталога. Вы можете использовать эту переменную, чтобы вставить полный путь перед вашим именем цели, если цель находится в вашем рабочем каталоге. Мы можем просмотреть значение $ PWD с помощью команды echo:

Проверка значения переменной среды $ PWD

Этот текст вставляется, если мы используем $ PWD как часть команды. Рекомендуется заключать его в кавычки как «$ PWD», если в имени каталога есть пробелы. Кавычки гарантируют, что оболочка знает, что они являются частью имени пути, а не разделителями команд.

Вот наша команда и список каталогов, чтобы показать, что она работает:

Использование переменной окружения $ PWD для создания символической ссылки.

Обратите внимание, что мы также ставим косую черту («/») непосредственно между «$ PWD» и myfile.txt, чтобы завершить полное имя пути.

Ссылка на основную публикацию