Ссылкой в 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
Были добавлены два критерия:
-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 завершена.
Примените скидку, вставив промокод в специальное поле при оформлении заказа: