Как удалить символическую ссылку на каталог?


100

Я сделал символическую ссылку со следующей командой:

ln -s ../test5

Я хочу удалить это сейчас, но мой rm терпит неудачу:

$ rm -Rf test5/
rm: cannot remove `test5/': Not a directory
$ rm test5/
rm: cannot remove directory `test5/': Is a directory
$ rmdir test5/
rmdir: test5/: Not a directory
$rm -r test5/
rm: cannot remove `test5/': Not a directory

$ls -l
 0 lrwxrwxrwx  1 peter peter    8 Jul 20 15:30 test5 -> ../test5/

Как я могу удалить свою символическую ссылку? (Ubuntu 8.10, bash)


4
СОВЕТ: rm -r link/удаляет содержимое на цели
Gayan Weerakutti

Ответы:


121

Удалить косую черту:

С подсказкой:

$ rm test5

Без подсказки:

$ rm -f test5


Это говорит permission denied.
1.21 гигаватт

1
Без косой черты. Так test5/неверно.
pylover

20

Попробуй rm test5
(без косой черты).

Слэш показывает , что «test5» является direactory в то время как на самом деле файл ссылки на каталог.


14

Вы можете запустить удаление косой черты:

$ rm test5

Это удалит файл (т.е. символическую ссылку).

В качестве альтернативы вы можете использовать unlink:

$ unlink test5

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


0

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

Таким образом, в этом случае введите символ за символом ссылку, которая будет удалена как «test5», например. rm test5,


1
Никогда не слышал о невидимой слеш. Какая оболочка это делает?
Камиль Мачоровский

Я думаю, что это возможно ссылка на символ, скрываемый linewrap + курсор?
бертиб

0

Проблема в OP - это трейлинг /, поэтому test5/выдает ошибку, но test5работает.

Я предпочитаю использовать, unlinkа не rmкак мое намерение яснее, и нет никакой возможности ошибочно удалить реальный каталог вместо ссылки. Убедитесь, что /после имени каталога нет трейлинга , например:

unlink test5

-1

Чувствую себя глупо, но вы пробовали rm -r? Так как это символическая ссылка, она не должна удалять цель.

Редактировать: только что попробовал, это правильно

Edit 2: rmdir говорит, что в первой строке справочной страницы он удаляет пустые каталоги. Я бы подумал, потому что это ссылка, в которой он проверял бит каталога в свойствах своего файла, а потому что rmdir не подозревает, что в этом случае он выдает ошибки. Просто используйте rm -r


2
Это попросит меня удалить файлы в каталоге, это не то, что я хочу, я хочу удалить только ссылку
Питер Смит

Спрос был, потому что интерактивный был определен в моем .profile. Добавлен ответ на rm -r. Это все еще не работает.
Питер Смит

Вы оставили след "/", поэтому он потерпел неудачу
Бобби
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.