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

Обновлено: 21.11.2024

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

Список символических ссылок

Команду ls можно использовать для вывода списка символических ссылок. Параметр -l должен быть указан в команде ls, в которой будут перечислены подробные атрибуты файлов. В следующем примере «mylink» — это ссылка на файл с именем «myfile.txt».

Вывод показан ниже. Символ l означает, что это ссылка. Также «mylink -> myfile.txt» означает, что «mylink» является ссылкой на «myfile.txt».

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

Команда rm используется для удаления файлов и папок. Но команду rm также можно использовать для удаления символических ссылок. Простое указание имени ссылки удаляет символическую ссылку. В следующем примере мы удалим символическую ссылку «mylink».

Также с помощью команды rm можно удалить несколько символических ссылок. Имена ссылок вводятся через пробел.

Ссылку также можно удалить, указав полный или абсолютный путь. В следующем примере мы удалим ссылку с именем mylink, расположенную в /home/ismail/.

Для предотвращения ошибок перед удалением (удалением) символических ссылок мы можем использовать подтверждение. Опцию -i можно использовать для подтверждения удаления символических ссылок.

Удалить (удалить) символическую ссылку с помощью команды unlink

Команда unlink специально создана для отключения или удаления ссылки. Команда unlink описывается как «вызов функции unlink для удаления указанного файла». В противном случае команда unlink может удалить одну ссылку за раз.

Если символическая ссылка успешно удалена, вывод невозможен.

Удалить (удалить) символическую ссылку с помощью команды find

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

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

Удалить (удалить) символическую ссылку с помощью файлового менеджера (GUI)

Диспетчер файлов – это инструмент с графическим интерфейсом, который используется в различных средах рабочего стола в Linux. Файловые менеджеры могут легко отображать и удалять символические ссылки. Символические ссылки, отмеченные значком стрелки или подобным. Символическую ссылку можно удалить, щелкнув ее правой кнопкой мыши и выбрав «Переместить в корзину» или «Удалить» и т. д.

Удалить (удалить) символическую ссылку с помощью файлового менеджера (GUI)

Найти и удалить (удалить) неработающие символические ссылки

Символические ссылки создаются для указания на файл или каталог. но когда указанный файл или каталог удаляются или перемещаются по другому пути, символические ссылки перестают работать. Просто неработающих целей символических ссылок не существует. Команда find используется для поиска указанных файлов или каталогов. Также команда find может находить ссылки. Мы можем указать критерии как неработающие ссылки для поиска и удаления с помощью параметра -delete для удаления неработающих ссылок. Мы будем использовать параметр -xtype, чтобы указать поврежденный тип файла, где символ l используется для установки символической ссылки.

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

В этом руководстве ознакомьтесь с удалением символической ссылки в Linux.

Предпосылки

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

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

Обнаружение символической ссылки

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

Мы можем определить символическую ссылку по информации о файле.

Посмотрите на права доступа к файлу. Первый символ — «l», указывающий, что это символическая ссылка. Позже в выходных данных также указывается исходное местоположение файла.

Удаление символической ссылки

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

Для демонстрации я сделал фиктивную символическую ссылку. Узнайте больше о том, как создать символическую ссылку в Linux.

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

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

Следующая команда rm удалит символическую ссылку.

Чтобы удалить несколько символических ссылок, используйте rm так же, как и для удаления нескольких файлов. Используйте следующую структуру команд.

В интерактивном режиме rm будет спрашивать перед удалением каждого файла и каталога. Чтобы запустить rm в интерактивном режиме, используйте флаг «-i».

Если целевая символическая ссылка относится к каталогу, избегайте «/» в конце имени каталога.

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

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

Вместо использования rm удаление ссылок также является эффективным инструментом для удаления символических ссылок. Это специальный инструмент для удаления ссылок (как символических, так и жестких). Однако, в отличие от rm, unlink поддерживает удаление одного файла за раз.

Чтобы удалить символическую ссылку, используйте следующую команду unlink.

Если символическая ссылка является ссылкой на каталог, не добавляйте «/» в конце. Этот инструмент не может удалять каталоги.

Неработающие ссылки

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

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

Поиск неработающих ссылок

Чтобы найти неработающую ссылку в определенном каталоге, выполните следующую команду.

В выходных данных команда find отобразит список всех найденных неработающих символических ссылок.

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

Удаление неработающих ссылок

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

Заключение

Символические ссылки в основном представляют собой файлы указателей, поэтому их можно удалить, как обычный файл. Кроме того, вы также можете использовать специальные инструменты для удаления символических ссылок из системы. Убедитесь, что вы не удаляете никакие символические ссылки, являющиеся частью важной функции, например, символические ссылки в каталоге «/usr/bin».

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

Об авторе

Сидратул Мунтаха

Студент CSE. Я люблю Linux и играю с технологиями и гаджетами. Я использую как Ubuntu, так и Linux Mint.

Теперь я хочу исправить это, но он говорит, что символическая ссылка уже существует.

6 ответов 6

Вы можете использовать rm для удаления символической ссылки.

удалит символическую ссылку.

отказано в доступе: вы знаете, что вам нужен sudo, если вы хотите использовать его в ситуации, когда у вас нет файла? Это касается и rm.

@RaheelKhan нет, нет, вы удалили СИМВОЛОЧНУЮ ССЫЛКУ. Однако Python полагается на эту символическую ссылку. Если вы воссоздадите эту символическую ссылку, Python вернется.

Вы также можете попробовать команду отмены связи.

unlink аналогична команде rm . Поэтому rm будет работать так же, как unlink

Хотя вы правы в том, что unlink удалит символическую ссылку, это не псевдоним rm . Они разные, если совсем чуть-чуть. Например, вы не можете передать несколько аргументов для отмены связи

Предположим, вы пытаетесь сделать:

но случайно:

Чтобы исправить это, просто перейдите в папку, в которой находится ссылка, и отмените связь

.

Вы можете использовать следующее, чтобы удалить символическую ссылку

Пояснение

  • rm — это команда терминала для удаления файла. См. rm --help для дополнительных опций, которые он может использовать.
  • sudo используется, поскольку символическая ссылка была создана с помощью sudo . Таким образом, файл принадлежит root, и ваш обычный пользователь не будет иметь разрешения на его редактирование/удаление (вы могли бы принудительно сделать это, если бы у вас было разрешение на запись в каталог, чего здесь не было бы).

Дополнительно

Также см. этот пост и мой комментарий к первому ответу для доступа к phpmyadmin при получении ошибки «не найдено» после установки.

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

Чтобы удалить символическую ссылку, я использовал unlink имя_папки. Это не удалось, так как в конце был /, из-за которого файл выглядел как каталог.

Да, ключевой момент — косая черта / в конце, которую нужно убрать. Команда rm также работает.

Я застрял здесь, потому что мне нужно было удалить dpkg-divert, а новый пакет не будет установлен, пока он не будет удален.

Итак, если вы сделали что-то вроде этого:

Вам нужно удалить его примерно так:

Очень активный вопрос. Заработайте 10 репутации (не считая бонуса ассоциации), чтобы ответить на этот вопрос. Требование к репутации помогает защитить этот вопрос от спама и отсутствия ответа.

Не тот ответ, который вы ищете? Просмотрите другие вопросы, помеченные символической ссылкой, или задайте свой вопрос.

Связано

Связанные

Горячие вопросы о сети

Чтобы подписаться на этот RSS-канал, скопируйте и вставьте этот URL-адрес в программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; вклады пользователей под лицензией cc by-sa. версия 2022.3.18.41718

У меня есть символическая ссылка на важный каталог. Я хочу избавиться от этой символической ссылки, сохранив за ней каталог.

Я попробовал rm и получил обратно rm: не могу удалить 'foo' .
Я попробовал rmdir и получил обратно rmdir: не удалось удалить 'foo': каталог не пуст
Затем я прошел через rm -f , rm -rf и sudo rm -rf

Затем я пошел искать свои резервные копии.

Есть ли способ избавиться от символической ссылки, не выплескивая вместе с водой ребенка?

Что плохого в том, чтобы задавать вопросы, связанные с Linux? в прошлый раз, когда я проверял, переполнение стека не было специфичным для ОС

@mwfearnley Да, но проверьте дату. Суперпользователя тогда еще не было. Его портировали, так что он тоже есть. Не знаю, почему он до сих пор здесь, но это мой самый результативный вопрос, и я не собираюсь смотреть в зубы подарочной карме.

11 ответов 11

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

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

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

Это не всегда работает. Иногда вам нужно запустить rm -rf имя_папки (без окончания /), чтобы удалить символическую ссылку. Например, Amazon Linux ведет себя таким образом при определенных обстоятельствах.

@r3mus: Никогда не используйте -r с символической ссылкой, если вы не хотите потерять все, что внутри нее. -f также не требуется, за исключением, возможно, переопределения прав доступа к файлам.

В частности, unlink не имеет никакого отношения к операции ln AKA 'link'. Название unlink относится к процессу разъединения/удаления файла из файловой таблицы файловой системы, так что содержимое становится отсоединенным от любой ссылки на него - они не связаны. Это сбивающее с толку имя, которое совершенно вводит в заблуждение применительно к ссылкам и символическим ссылкам в частности. unlink будет работать с символическими ссылками, потому что он работает с любым файлом независимо от его типа.

Если вы когда-нибудь действительно беспокоились о том, чтобы сделать что-то глупое, я думаю, псевдоним rm="rm -i" спас больше шкур, чем что-либо еще.

используйте команду "unlink" и убедитесь, что нет / в конце

unlink() удаляет имя из файловой системы. Если это имя было последней ссылкой на файл, и ни один процесс не открыл файл, файл удаляется, а пространство, которое он использовал, становится доступным для повторного использования. Если имя было последней ссылкой на файл, но какой-либо процесс все еще имеет открытый файл, файл будет существовать до тех пор, пока не будет закрыт последний файловый дескриптор, ссылающийся на него.

Я думаю, что это может быть проблематично, если я правильно читаю.

Если имя относится к символической ссылке, ссылка удаляется.

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

Читайте также: