Ссылкой в системе Linux называют специальный файл, который отсылает к другому файлу или директории. В результате один файл может размещаться сразу же в нескольких местах одновременно.
При удалении оригинала ссылка на него сохраняется. В результате могут возникать сбои и в целом засорятся система. В данной статье мы расскажем, как удалить ссылку в Linux.
Содержание статьи
Как удалить ссылку в Linux
Сначала мы объясним способ проверки, что файл на самом деле является ссылкой. Это удобно делать с помощью утилиты ls. А затем рассмотрим три способа удаления, каждый из которых имеет свои особенности.
Убедится, что это ссылка
С помощью ls удобно смотреть информацию о файле. Для использования утилиты задайте ей опцию -l и укажите путь. В качестве примера возьмем файл ~/symlinks/link_1:
ls -l ~/symlinks/link_1
Также вы можете проверить целый каталог на наличие ссылок:
ls -l ~/symlinks/
Нужный файл будет отмечен характерной стрелочкой после его названия.
Удалить с помощью rm
Команда rm позволяет удалять любые файлы в файловой системе Linux, в том числе и ссылки. А значит, она подходит для нашей задачи. Здесь важно упомянуть, что в результате удаления ссылки оригинальный файл или директория затронуты не будут.
В терминале выполните команду:
rm ~/symlinks/link_1
При этом на вывод никаких данных не поступит. Чтобы получить подробную информацию о процедуре, добавьте команде опцию -v:
rm -v ~/symlinks/link_1
Дополнительно можно проверить, пропала ли ссылка из директории. Для этого используйте описанную ранее команду ls.
Теперь вы знаете как удалить символическую ссылку Linux.
Удалить с помощью unlink
Утилита unlink предназначается для удаления файлов из файловой системы Linux. Ей достаточно указать путь к ссылке:
unlink ~/symlinks/link_1
А затем проверить успешность операции с помощью ls.
В рамках поставленной задачи rm и unlink работают практически одинаково. А теперь перейдем к последнему способу.
Удалить ссылки с помощью find
С помощью команды 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
В команду были добавлены два критерия:
- -name – поиск по имени.
- -mtime – по времени модификации.
По заданному шаблону все найденные ссылки можно удалить. Для этого -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. В случае с утилитами rm и unlink процедура достаточно простая. Но их следует использовать в паре с ls для проверки ссылок и успешности выполнения процедуры. А find в этом плане является универсальным вариантом с расширенными возможностями. Он окажется особенно полезным для чистки битых ссылок, которые никуда не ведут.