- Remove a symlink to a directory
- 12 Answers 12
- Как удалить символические ссылки в Linux
- Прежде чем вы начнете
- Удалить символические ссылки с помощью команды rm
- Удалить символические ссылки с unlink
- Найти и удалить неработающие символические ссылки
- Заключение
- Как создавать и удалять симлинки
- Windows
- Синтаксис
- Симлинк на файл
- Симлинк на директорию
- Удалить симлинк
- Разрешить симлинки в Windows
- Linux и FreeBSD
- Создание
- Удаление
- Решение возможных проблем
- ln: failed to create symbolic link . Function not implemented
- 🐧 Как удалить символические ссылки в Linux
- Что такое символическая ссылка?
- Что за команда rm?
- Что за команда unlink?
- 1) Как удалить файлы символьных ссылок с помощью команды rm
- 2) Как удалить символические ссылки с помощью команды unlink
- You may also like
- 📜 Чтение файла построчно на Bash
- 📧 В чем разница между IMAP и POP3
- ✔️ Как управлять контейнерами LXD от имени обычного.
- 📜 Руководство для начинающих по созданию первого пакета.
- Феноменальная популярность электроники Xiaomi: основные причины
- 📜 Получение вчерашней даты в Bash: Практическое руководство
- Использование специальных гелей при мышечных болях
- 🐧 Сравнение команд Printf и Echo на Linux
- 📦 Как расширить/увеличить файловую систему VxFS на Linux
- Услуги по размещению серверного оборудования в ЦОД
- Leave a Comment Cancel Reply
- • Свежие записи
- • Категории
- • Теги
- • itsecforu.ru
- • Страны посетителей
- IT is good
Remove a symlink to a directory
I have a symlink to an important directory. I want to get rid of that symlink, while keeping the directory behind it. I tried rm and get back rm: cannot remove ‘foo’ .
I tried rmdir and got back rmdir: failed to remove ‘foo’: Directory not empty
I then progressed through rm -f , rm -rf and sudo rm -rf Then I went to find my back-ups. Is there a way to get rid of the symlink with out throwing away the baby with the bathwater?
what’s wrong with asking linux-related questions? last time i checked, stack overflow was not os-specific
@mwfearnley It would be, but check the date. Super User wasn’t a thing yet back then. It’s been ported, so it’s there too. Not sure why it’s still here, but it’s my highest scoring question and I’m not gonna look gift karma in the mouth.
12 Answers 12
# this works: rm foo # versus this, which doesn't: rm foo/
Basically, you need to tell it to delete a file, not delete a directory. I believe the difference between rm and rmdir exists because of differences in the way the C library treats each.
At any rate, the first should work, while the second should complain about foo being a directory.
If it doesn’t work as above, then check your permissions. You need write permission to the containing directory to remove files.
This does not always work. Occasionally you need to run rm -rf folderName (without trailing /) in order to remove the symlink. Amazon Linux behaves this way under certain circumstances, for example.
@r3mus: Never use -r with a symlink unless you want to lose everything inside it. -f shouldn’t be needed either, except perhaps to override file permissions.
Specifically, unlink has no relation to the ln AKA ‘link’ operation. The name unlink refers to the process of unlinking/removing a file from the file system’s file table so that the contents become detached from any reference to them — they are unlinked. It’s a confusing name that’s downright misleading when applied to links and symlinks in particular. unlink will work with symlinks because it works with any file regardless of type.
If you’re ever actually worried about doing something silly, alias rm=»rm -i» has saved more hides than just about anything else out there I think.
use the «unlink» command and make sure not to have the / at the end
unlink() deletes a name from the file system. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse. If the name was the last link to a file but any processes still have the file open the file will remain in existence until the last file descriptor referring to it is closed.
I think this may be problematic if I’m reading it correctly.
If the name referred to a symbolic link the link is removed.
If the name referred to a socket, fifo, or device the name for it is removed but processes that have the object open may continue to use it.
Как удалить символические ссылки в Linux
Добавить в избранное
Главное меню » Операционная система Linux » Как удалить символические ссылки в Linux
С имволическая ссылка, также известная как symlink, представляет собой специальный тип файла, который указывает на другой файл или каталог. Это что-то вроде ярлыка в Windows. Символьная ссылка может указывать на файл или каталог в той же или другой файловой системе или разделе.
В этой статье мы покажем вам , как удалить символические ссылки в системах Linux/UNIX с помощью команд rm, unlink и find.
Прежде чем вы начнете
Чтобы удалить символическую ссылку, вам необходимо иметь права на запись в каталог, содержащий символическую ссылку. В противном случае вы получите ошибку «Operation not permitted».
Когда вы удаляете символическую ссылку, файл, на который она указывает, не затрагивается.
Используйте команду ls -l, чтобы проверить, является ли данный файл символической ссылкой, и найти файл или каталог, на который указывает символическая ссылка.
lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python -> python2.7
Первый символ «l» указывает, что файл является символической ссылкой. Символ «->» показывает файл, на который указывает символическая ссылка.
Удалить символические ссылки с помощью команды rm
Команда rm удаляет указанные файлы и каталоги.
Чтобы удалить символическую ссылку, вызовите команду rm с символическим именем ссылки в качестве аргумента:
В случае успеха команда завершается с нуля и не выводит никаких данных.
С rm его помощью вы можете удалить более одной символической ссылки одновременно. Для этого передайте имена символических ссылок в качестве аргументов через пробел:
Чтобы получить запрос перед удалением символической ссылки, используйте параметр -i:
Для подтверждения нажмите клавишу y и нажмите Enter.
rm: remove symbolic link 'symlink_name'?
Если символическая ссылка указывает на каталог, не добавляйте косую черту / в конце. В противном случае вы получите ошибку:
rm: cannot remove 'symlink_to_dir/': Is a directory
Если имя аргумента заканчивается на /, команда rm предполагает, что файл является каталогом. Ошибка возникает из-за того, что при использовании без опции -d или -r rm yt удалит каталоги.
Чтобы быть в безопасности, никогда не используйте вариант -r при удалении символических ссылок с командой rm. Например, если вы введете:
Содержимое целевого каталога будет удалено.
Удалить символические ссылки с unlink
Команда unlink удаляет данный файл. В отличие от rm, unlink принимает только один аргумент.
Чтобы удалить символическую ссылку, запустите команду unlink с именем символической ссылки в качестве аргумента:
Если команда выполняется успешно, она не отобразит вывод.
Не добавляйте косую черту / в конце имени символической ссылки, потому что unlink не может удалить каталоги.
Найти и удалить неработающие символические ссылки
Если вы удалите или переместите исходный файл в другое место, символический файл останется висящим (сломанным).
Чтобы найти все неработающие символические ссылки в данном каталоге, выполните следующую команду:
find /path/to/directory -xtype l
/path/to/directory/symlink1 /path/to/directory/subdir/symlink2
Команда выведет список всех неработающих ссылок в каталоге и его подкаталогах.
Если вы хотите исключить символические ссылки, содержащиеся в подкаталогах, передайте параметр -maxdepth 1 в find:
find /path/to/directory -maxdepth 1 -xtype l
После того, как вы найдете нарушенные символические ссылки, вы можете вручную удалить их с помощью команд rm, unlink или использовать опцию -delete в команде find:
find /path/to/directory -xtype l -delete
Заключение
Чтобы удалить символическую ссылку, используйте команду rm или unlink, за которой следует имя символической ссылки в качестве аргумента. При удалении символической ссылки, указывающей на каталог, не добавляйте косую черту к имени символической ссылки.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Как создавать и удалять симлинки
Обновлено: 12.03.2023 Опубликовано: 25.01.2017
Windows
Работы с символьными ссылками в Windows ведутся из командной строки.
Синтаксис
Симлинк на файл
mklink C:\Users\dmosk\Desktop\cmd.exe C:\Windows\system32\cmd.exe
* в данном примере на рабочем столе пользователя dmosk будет создан симлинк на файл cmd.exe.
Симлинк на директорию
mklink /D «C:\Users\dmosk\Desktop\Сетевая папка» \\dmosk.local\share
* в примере создается симлинк на сетевую папку \\dmosk.local\share
** так как в названии папки есть пробел, путь заключен в кавычки.
Для создания ссылки на папку доступен также ключ /J. Созданная таким образом ссылка будет по некоторым особенностям напоминать жесткую ссылку.
Удалить симлинк
В Windows его можно удалить в проводнике, как обычный файл или папку.
Или использовать командную строку.
rmdir «C:\Users\dmosk\Desktop\Сетевая папка»
Разрешить симлинки в Windows
Если при попытке перейти по символьной ссылке мы получим ошибку «Символическая ссылка не может быть загружена, так как ее тип отключен», открываем командную строку от администратора и вводим команду:
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
Если это не помогло, пробуем создать симлинк с ключом /J.
Linux и FreeBSD
Создание
В системах на базе Linux (например, Ubuntu или CentOS) и FreeBSD симлинк для каталога и файла создаются одинаково:
ln -s /usr/share/nginx/html/index.php /home/dmosk/
ln -s /usr/share/nginx/html /home/dmosk/
* в первом примере создана символьная ссылка в домашней директории пользователя dmosk на файл index.php; во втором — на каталог /usr/share/nginx/html.
Удаление
Также используется одна команда:
Решение возможных проблем
При работе с симлинками мы можем сталкиваться с различными проблемами. Я рассмотрю те, с которыми приходилось сталкиваться мне.
ln: failed to create symbolic link . Function not implemented
При попытке создать симлинк мы можем получить ошибку Function not implemented, например:
ln: failed to create symbolic link ‘/etc/pve/nodes/pve/fullchain.pem’: Function not implemented
Причина: файловая система, на которой мы хотим создать файл не поддерживает симлинки. Посмотреть файловую систему подмонтированных разделов можно командой:
Решение: как правило, решения зависит от используемой файловой системы и ее драйвера. Но, обычно, решения у проблемы нет и нужно искать методы работы без использования символьных ссылок.
🐧 Как удалить символические ссылки в Linux
У вас может быть появиться задача создать или удалить символические ссылки в Linux.
Если да, знаете ли вы, как это сделать?
Вы уже сделали это? Вы знаете об этом что-либо?
Если да, то проблем нет. Если нет, не волнуйтесь, мы здесь, чтобы помочь вам в этом.
Это можно сделать с помощью команд rm и unlink.
Что такое символическая ссылка?
Символическая ссылка, также известная как symlink или softlink, представляет собой специальный тип файла, который указывает на другой файл или каталог в Linux.
Это похоже чем-то на ярлык в Windows.
Она может указывать на файл или каталог в той же или другой файловой системе или разделе.
Обычно символические ссылки используются для связи библиотек.
Также они используются для связывания файлов журналов и папок на смонтированных общих папках NFS (Network File System).
Что за команда rm?
Что за команда unlink?
Команда unlink используется для удаления указанного файла.
Она уже установлена, так как является частью GNU Gorutils.
1) Как удалить файлы символьных ссылок с помощью команды rm
Команда rm является одной из наиболее часто используемых команд в Linux.
Кроме того, она позволяет нам удалить символические ссылки, как описано ниже.
# rm -i symlinkfile1 rm: remove symbolic link ‘symlinkfile1’? y
# rm -i symlinkfile2 symlinkfile3 rm: remove symbolic link ‘symlinkfile2’? y rm: remove symbolic link ‘symlinkfile3’? y
2) Как удалить символические ссылки с помощью команды unlink
Она принимает только один файл за раз.
Удалить файл символьной ссылки
Если вы добавите завершающий слеш «/» в конце, вы не сможете удалить каталог символьных ссылок с помощью команды unlink.
# unlink symlinkdir3/ unlink: cannot unlink ‘symlinkdir3/’: Not a directory
itisgood
☁️ 7 Лучших хостинговых платформ Jenkins для малых предприятий
📀 Выпущен CentOS 8 – скачать образы ISO
You may also like
📜 Чтение файла построчно на Bash
📧 В чем разница между IMAP и POP3
✔️ Как управлять контейнерами LXD от имени обычного.
📜 Руководство для начинающих по созданию первого пакета.
Феноменальная популярность электроники Xiaomi: основные причины
📜 Получение вчерашней даты в Bash: Практическое руководство
Использование специальных гелей при мышечных болях
🐧 Сравнение команд Printf и Echo на Linux
📦 Как расширить/увеличить файловую систему VxFS на Linux
Услуги по размещению серверного оборудования в ЦОД
Leave a Comment Cancel Reply
• Свежие записи
• Категории
• Теги
• itsecforu.ru
• Страны посетителей
IT is good
В мире компьютерных игр Steam, платформа разработанная компанией Valve, является одной из самых популярных и широко используемых. Она предоставляет огромный выбор игр для…
В этой статье вы узнаете, как удалить удаленный Git-репозиторий. Процесс прост, но его полезно запомнить, чтобы избежать неожиданностей в будущем. Git – это…
В 11-й версии своей операционной системы Microsoft серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…
Продажа ноутбука нередко становится хлопотным занятием. Кроме поиска покупателя, продавцу необходимо подготовить устройство перед проведением сделки. Но если последовательно выполнить все шаги, ничего…
Вы можете оказаться в ситуации, когда вам нужно использовать скрипт шелла для чтения файлов построчно. В этом руководстве я расскажу о нескольких способах…