Ссылкой в Linux называют специальный файл, который отсылает к другому файлу или директории. Так один файл может размещаться сразу же в нескольких местах одновременно. При удалении оригинала ссылка на него сохраняется. В результате могут возникать сбои и в целом засорятся система.
Для начала объясним способ проверки, что файл на самом деле является ссылкой. Это удобно делать с помощью утилиты ls. После рассмотрим три способа удаления, каждый из которых имеет свои особенности.
С помощью ls удобно смотреть информацию о файле. Для использования утилиты задайте ей опцию -l и укажите путь. В качестве примера возьмем файл ~/symlinks/link_1:
$ ls -l ~/symlinks/link_1
Вы можете проверить целый каталог на наличие ссылок:
$ ls -l ~/symlin
Файл, который не нужен,
отмечен характерной стрелочкой после его названия.
С помощью команды rm можно удалять любые файлы в файловой системе Linux, в том числе и ссылки. То есть, она подходит для нашей задачи. Здесь важно упомянуть, что в результате удаления ссылки оригинальный файл или директория затронуты не будут.
В терминале выполните команду:
$ rm ~/symlinks/link_1
Также чтобы получить подробную информацию о процедуре, добавьте команде опцию -v:
$ rm -v ~/symlinks/link_1
Дополнительно можно проверить, пропала ли ссылка из директории. Для этого используйте описанную ранее команду ls.
Теперь вы знаете как удалить символическую ссылку Linux.
Утилита unlink предназначается для удаления файлов из файловой системы Linux. Ей достаточно указать путь к ссылке:
$ unlink ~/symlinks/link_1
В рамках поставленной задачи rm и unlink работают практически одинаково. А теперь перейдем к последнему способу.
С помощью команды find можно искать и удалять ссылки в заданной директории. А значит, не требуется дополнительное использование ls.
В отличие от двух предыдущих вариантов, у нее достаточно продвинутые возможности, например, установка критериев поиска. Но и синтаксис по этой причине не такой простой.
Для поиска нужно указать каталог и несколько параметров:
$ find ~/symlinks/ -type l -print
Параметр-type l нужен для отбора только символических ссылок, -print для вывода полного имени. А с помощью -maxdepth можно задать глубину поиска по вложенным каталогам. Если указать 1, то поиск будет идти только по самому каталогу, без вложений:
$ find ~/symlinks/ -maxdepth 1 -type l -print
Как только с
сылок в директории будет много, вы можете задать шаблон поиска для команды find. В качестве примера возьмем ситуацию, когда нужно отыскать только скрытые ссылки с датой последнего изменения не больше 30 дней назад:
$ find ~/data/ -type l -name ".*" -mtime -30 -print
Были добавлены два критерия:
По заданному шаблону все найденные ссылки можно удалить. Для этого -print заменяется на -delete:
$ find ~/data/ -type l -name ".*" -mtime -30 -delete
В конце инструкции разберемся с поиском и удалением битых ссылок, которые никуда не ведут, например, после удаления оригинального файла или директории. Для такой цели подойдет параметр -xtype l. При этом -print для вывода не требуется:
$ find ~/broken_links/ -xtype l
В результате все битые ссылки отобразятся в терминале. Для их удаления в конце команды добавьте -delete:
$ find ~/broken_links/ -xtype l -delete
На этом инструкция по удалению ссылки в Linux завершена.