Блог PQ Hosting

10.04.2022, 01:05

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

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

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

Убеждаем, что это ссылка

С помощью ls удобно смотреть информацию о файле. Для использования утилиты задайте ей опцию -l и укажите путь. В качестве примера возьмем файл ~/symlinks/link_1:

$ ls -l ~/symlinks/link_1

Удаляем ссылки в Linux

Вы можете проверить целый каталог на наличие ссылок:

$ ls -l ~/symlin

Удаляем ссылки в Linux

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

Используем Rm

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

В терминале выполните команду:

$ rm ~/symlinks/link_1

Удаляем ссылки в Linux

Также чтобы получить подробную информацию о процедуре, добавьте команде опцию -v:

$ rm -v ~/symlinks/link_1

Удаляем ссылки в Linux

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

Удаляем ссылки в Linux

Теперь вы знаете как удалить символическую ссылку Linux.

Используем UNLINK

Утилита unlink предназначается для удаления файлов из файловой системы Linux. Ей достаточно указать путь к ссылке:

$ unlink ~/symlinks/link_1

Удаляем ссылки в Linux

В рамках поставленной задачи rm и unlink работают практически одинаково. А теперь перейдем к последнему способу.

Используем Find 

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

Удаляем ссылки в Linux

В отличие от двух предыдущих вариантов, у нее достаточно продвинутые возможности, например, установка критериев поиска. Но и синтаксис по этой причине не такой простой.

Для поиска нужно указать каталог и несколько параметров:

$ find ~/symlinks/ -type l -print

Удаляем ссылки в Linux

Параметр-type l нужен для отбора только символических ссылок, -print для вывода полного имени. А с помощью -maxdepth можно задать глубину поиска по вложенным каталогам. Если указать 1, то поиск будет идти только по самому каталогу, без вложений:

$ find ~/symlinks/ -maxdepth 1 -type l -print

Удаляем ссылки в Linux

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

$ find ~/data/ -type l -name ".*" -mtime -30 -print

Удаляем ссылки в Linux

Были добавлены два критерия:

  • -name – поиск по имени.
  • -mtime – по времени модификации.

По заданному шаблону все найденные ссылки можно удалить. Для этого -print заменяется на -delete:

$ find ~/data/ -type l -name ".*" -mtime -30 -delete

Удаляем ссылки в Linux

В конце инструкции разберемся с поиском и удалением битых ссылок, которые никуда не ведут, например, после удаления оригинального файла или директории. Для такой цели подойдет параметр -xtype l. При этом -print для вывода не требуется:

$ find ~/broken_links/ -xtype l

Удаляем ссылки в Linux

В результате все битые ссылки отобразятся в терминале. Для их удаления в конце команды добавьте -delete:

$ find ~/broken_links/ -xtype l -delete

Удаляем ссылки в Linux

На этом инструкция по удалению ссылки в Linux завершена.