У меня есть символическая ссылка на важный каталог. Я хочу избавиться от этой символической ссылки, сохраняя при этом каталог за ней.
Я пытался rm
и вернуться rm: cannot remove 'foo'
.
Я попытался rmdir
и вернулся, rmdir: failed to remove 'foo': Directory not empty
я прогрессировал rm -f
, rm -rf
иsudo rm -rf
Затем я пошел, чтобы найти свои резервные копии.
Есть ли способ избавиться от символической ссылки, не выбрасывая ребенка с водой?
rm -r link/
удаляет содержимое на целиThen I went to find my back-ups
- Это заставило меня посмеяться.Ответы:
По сути, вы должны сказать ему, чтобы удалить файл , а не удалить каталог . Я полагаю, что разница между
rm
иrmdir
существует из-за различий в том, как библиотека C относится к каждому.Во всяком случае, первое должно работать, а второе должно жаловаться на то, что foo является каталогом.
Если это не работает, как указано выше, проверьте свои разрешения. Для удаления файлов вам нужно разрешение на запись в содержащий каталог.
источник
rm -rf folderName
(без трейлинга /), чтобы удалить символическую ссылку. Amazon Linux ведет себя таким образом при определенных обстоятельствах, например.-r
символическую ссылку, если вы не хотите потерять все внутри нее.-f
также не нужно, за исключением, возможно, переопределения прав доступа к файлам.unlink
имеет никакого отношения кln
операции «ссылка» AKA. Имяunlink
относится к процессу удаления / удаления файла из таблицы файлов файловой системы, так что содержимое становится отделенным от любой ссылки на них - они не связаны. Это запутанное имя, которое вводит в заблуждение, в частности, применительно к ссылкам и символическим ссылкам.unlink
будет работать с символическими ссылками, потому что он работает с любым файлом независимо от его типа.alias rm="rm -i"
я думаю , вы сэкономили больше шкур, чем всего остального.используйте команду "unlink" и убедитесь, что не иметь / в конце
Я думаю, что это может быть проблематично, если я правильно читаю.
https://linux.die.net/man/2/unlink
источник
~/c/a/file
,/c/b/
сln -s ~/c/a ~/c/b/
. В~/c/b/
,rm a/
не работает,rm -rf a/
только пустой оригиналa
.unlink a
работает отлично, иunlink a/
ничего не делает.unlink
это просто псевдоним дляrm
. Это показывает, чтоrm
при работе с любой частью вашей структуры каталогов следует использовать надлежащую дисциплину.rm -f
будет молча удалить ссылку, независимо от того, существует она или нет, аunlink
будет жаловаться, если ссылка отсутствует. Не существует опции `-f ', эквивалентной unlink, что делает скрипт более сложным.unlink
Можно удалить обычные файлы. это менее характерно, чемrm
и не характерно для символических ссылок.rm
также не удаляет каталоги без-r
флага. Поэтому я рекомендую выбрать rm, у него есть флаги для подробного и интерактивного; а также значимые предупреждения и сообщения об ошибках.rm должен удалить символическую ссылку.
источник
Используйте,
rm symlinkname
но не включайте косую черту в конце (не используйте :)rm symlinkname/
. Затем вас спросят, хотите ли вы удалить символическую ссылку,y
чтобы ответить «да».источник
Предполагая, что это на самом деле символическая ссылка,
Он должен это выяснить, но, поскольку он не может включить скрытый код, который был предназначен для другого случая, который больше не существует, но в данном случае он поступает правильно.
источник
Если rm не может удалить символическую ссылку, возможно, вам нужно посмотреть разрешения для каталога, который содержит символическую ссылку. Чтобы удалить записи каталога, вам нужно разрешение на запись в каталог, содержащий.
источник
Предполагая, что ваши настройки похожи на:,
ln -s /mnt/bar ~/foo
тогда вы сможете сделать этоrm foo
без проблем. Если вы не можете, убедитесь, что вы являетесь владельцемfoo
и имеете разрешение на запись / выполнение файла. Удалениеfoo
не коснетсяbar
, если вы не сделаете это рекурсивно.источник
На CentOS просто запустите
rm linkname
и он попросит «удалить символическую ссылку?». Введите Yи Enterссылка исчезнет, и каталог будет в безопасности.источник
У меня была эта проблема с MinGW (фактически Git Bash), работающим на Windows Server. Ни одно из приведенных выше предложений не сработало. В конце концов сделал копию каталога на тот случай, затем удалил программную ссылку в Windows Explorer, затем удалил элемент в Корзине. Он издавал шумы, как будто удалял файлы, но не делал этого. Сделайте резервную копию, хотя!
источник