Команда Ln: как создавать символические ссылки в Linux

Почему?

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

Aron griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint.

Method 1

Create it using the context menu as shown and deleting via file explorer.

Test with a folder like C:WindowsLogs as shown or similar.
I’m just creating a directory of all the possible locations of temp files to delete and I wanted a central folder where I could monitor the size of them via symbolic links.

Please note: The screen going white is just the UAC.

Method 2

The safest way undocumented here AFAIK.

On the created symbolic link (in steps shown above), right-click on it this time and click properties then go to the Link Properties tab.

Note: This shell extension added this tab.

Before I go on, lots more info can be found here, also, on the homepage are the x64 and 32bit versions.

So, to continue, here you can add anything to the target field as long as it’s different to the original target.

Soft links против hard links

Команду ln можно использовать для создания двух разных типов ссылок:

  • Hard Links (жесткие ссылки)
  • Soft Links (символические или мягкие ссылки)

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

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

$ cd /tmp$ touch firstlink$ ln firstlink secondlink$ ls -i firstlink secondlink15782 firstlink 15782 secondlink

Как видите, жесткие ссылки работают на уровне инодов, для указания конкретного файла. В Linux системах, для жестких ссылок есть несколько ограничений. В частности, можно создавать жесткие ссылки только на файлы, не на директории. Да-да, именно так; хотя “.” и “..” являются созданными системой жесткими ссылками на директории, вам (даже от имени пользователя «root») не разрешается создавать любые свои собственные.

Второе ограничение жестких ссылок состоит в том, что нельзя связать ими несколько файловых систем. Это значит, что у вас не получится создать жесткую ссылку с /usr/bin/bash на /bin/bash и если ваши директории / и /usr находятся в разных файловых системах (разделах — прим. пер.).

:/>  Погружение в Iptables – теория и настройка

Как найти и удалить битые символические ссылки в linux | белые окошки

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

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

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

Ubuntu link

если же ссылка битая, то на нее «накладывается» еще один значок — крестик в красном кружке.

Битая ссылка

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

Рабочие симлинки

Если ссылка битая, ее название и название объекта, на который она ссылается, будут иметь красный цвет.

Битые симлинки

Для поиска мягких ссылок в Linux очень удобно использовать команду find, точнее find . -type l, выводящую их список в текущем каталоге и всех вложенных в него папках.

Find

При этом команда с данным набором параметров не различает рабочие и нерабочие ссылки, чтобы получить список только битых ссылок, вместо параметра type нужно использовать параметр  -xtype, вот так:

find . -xtype l

Find xtype

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

Отказано в доступе

SUDO здесь не поможет, решить эту проблему можно сбросив все ошибки в /dev/null.

Добавьте к уже известной команде перенаправление:

find . -xtype l 2>/dev/null

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

:/>  asrock h110m dgs установка windows 7

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

Link delete

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

В общем, если и удалять битые симлинки, то делать это нужно только в тех системных каталогах, назначение которых вам известно. Так, тест с удалением всех битых символических ссылок в Ubuntu 20.04, установленной на виртуальную машину VirtualBox, нарушило работу дополнений гостевой ОС, в результате чего в виртуальной системе оказалось доступным только разрешение VGA, составляющее всего 640×480 пикселей.

Метод 1

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

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

Обратите внимание: белый экран – это просто UAC .

Метод 2

Самый безопасный способ без документов здесь AFAIK .

На созданной символической ссылке ( в шагах, показанных выше ) щелкните правой кнопкой мыши на этот раз и выберите Свойства, затем перейдите на Link Propertiesвкладку.

Примечание. Это расширение оболочки добавило эту вкладку.

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

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

Принудительно перезаписать символические ссылки

Вы можете получить сообщение об ошибке, как показано на изображении ниже:

Сообщение об ошибке означает, что в месте назначения уже есть файл с именем link_file.txt. Используйте параметр -f, чтобы система перезаписывала целевую ссылку:

ln -sf test_file.txt link_file.txt

Примечание. Использование опции -f навсегда удалит существующий файл.

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

В практике, символьные ссылки (или символические, иногда «симлинки» — от англ.) используются гораздо чаще, чем жесткие. Симлинки — это файлы особого типа, которые ссылаются на другие файлы по имени, а не прямо по номеру инода. Они не спасают файлы от удаления; если файл, на который указывает ссылка, исчезает, то симлинк перестает работать, ломается.

Символические ссылки можно создать передав для ln опцию -s.

$ ln -s secondlink thirdlink$ ls -l firstlink secondlink thirdlink-rw-rw-r– 2 agriffis agriffis 0 Dec 31 19:08 firstlink
-rw-rw-r– 2 agriffis agriffis 0 Dec 31 19:08 secondlink
lrwxrwxrwx 1 agriffis agriffis 10 Dec 31 19:39 thirdlink -> secondlink

:/>  Что это такое и почему вы не можете удалить его?

В выводе ls -l символьные ссылки можно отличить тремя способами. Во-первых, обратите внимание на символ l в первой колонке. Во-вторых, размер символической ссылки равен количеству символов в ней (secondlink в нашем случае). В-третьих, последняя колонка в выводе показывает куда ведет ссылка с помощью интуитивного обозначения “->”.

Создать символическую ссылку на каталог linux

Символическая ссылка может относиться к каталогу. Чтобы создать символическую ссылку на каталог в Linux:

ln -s /mnt/external_drive/stock_photos ~/stock_photos

В этом примере создается символическая ссылка с именем stock_photos в домашнем каталоге ~ /. Ссылка относится к каталогу stock_photos на внешнем диске external_drive.

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

Удаление ссылок

Если исходный файл будет перемещен, удален или станет недоступным (например, сервер отключится), ссылку нельзя будет использовать. Чтобы удалить символическую ссылку, используйте команду rm (remove) или unlink:

rm link_file.txt
unlink link_file.txt	

Удалить символическую ссылку с помощью rm

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

rm SymLinkToDelete

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

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

Знаете другой или лучший способ изменить и удалить символические ссылки в командной строке? Дайте нам знать об этом в комментариях.

Программы для Windows, мобильные приложения, игры – ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале – Подписывайтесь:)

Оставьте комментарий