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

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

Swanand
источник
Это говорит permission denied.
1.21 гигаватт
1
Без косой черты. Так test5/неверно.
pylover
20

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

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

pelms
источник
14

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

$ rm test5

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

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

$ unlink test5

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

Каллум
источник
0

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

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

user872812
источник
1
Никогда не слышал о невидимой слеш. Какая оболочка это делает?
Камиль Мачоровский
Я думаю, что это возможно ссылка на символ, скрываемый linewrap + курсор?
бертиб
0

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

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

unlink test5
isapir
источник
-1

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

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

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

Бобби
источник
2
Это попросит меня удалить файлы в каталоге, это не то, что я хочу, я хочу удалить только ссылку
Питер Смит
Спрос был, потому что интерактивный был определен в моем .profile. Добавлен ответ на rm -r. Это все еще не работает.
Питер Смит
Вы оставили след "/", поэтому он потерпел неудачу
Бобби