Comment supprimer un lien symbolique vers un répertoire?

100

J'ai fait un lien symbolique avec la commande suivante:

ln -s ../test5

Je veux l'enlever maintenant mais ma société échoue:

$ 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/

Comment puis-je supprimer mon lien symbolique? (Ubuntu 8.10, bash)

Peter Smit
la source
4
CONSEIL: rm -r link/supprime le contenu sur la cible
Gayan Weerakutti, le

Réponses:

121

Supprimer la barre oblique finale:

Avec invite:

$ rm test5

Sans invite:

$ rm -f test5

Swanand
la source
Ça dit permission denied.
1,21 gigawatts
1
Sans slash final. Donc test5/est incorrect.
survol du
20

Essayez rm test5
(sans la barre d'entraînement).

La barre oblique indique que 'test5' est un répertoire, alors qu’il s’agit en fait d’un fichier reliant un répertoire.

pelms
la source
14

Vous pouvez exécuter la suppression de la barre oblique finale:

$ rm test5

Cela supprimera le fichier (c.-à-d. Le lien symbolique).

Sinon, vous pouvez utiliser unlink:

$ unlink test5

Encore une fois, vous devez omettre la barre oblique finale car vous essayez de dissocier le lien symbolique et non le répertoire.

Callum
la source
0

Parfois, si vous utilisez la fonction de saisie semi-automatique pour nommer le lien que vous souhaitez supprimer, il se peut que la barre oblique ne s'affiche pas à la fin du slash, mais qu'elle soit "à moitié" et que la barre oblique invisible génère toujours l'erreur de suppression lorsque vous essayez de supprimer ce lien.

Donc, dans ce cas, tapez caractère par caractère le lien à supprimer comme "test5" comme par exemple. rm test5.

utilisateur872812
la source
1
Jamais entendu parler de slash invisible. Quelle coquille fait cela?
Kamil Maciorowski
Je pense que c'est peut-être une référence au caractère caché par le retour à la ligne + curseur?
Bertieb
0

Le problème dans le PO est la fuite /, test5/lance donc une erreur mais test5fonctionne.

Je préfère utiliser unlinkplutôt que rmmon intention est plus claire et il n'y a aucune chance de supprimer par erreur le répertoire réel au lieu du lien. Assurez-vous qu’il n’ya pas de fin /après le nom du répertoire, par exemple:

unlink test5
isapir
la source
-1

Je me sens stupide de demander, mais avez-vous essayé rm -r? Comme il s’agit d’un lien symbolique, il ne faut pas supprimer la cible.

Edit: juste essayé, c'est correct

Edit 2: rmdir indique dans sa première ligne de la page de manuel qu'il supprime les répertoires vides. Je pense que parce que c'est un lien, le bit de répertoire a été vérifié sur ses propriétés de fichier, mais parce que rmdir ne le soupçonne pas, il génère des erreurs. Il suffit d'utiliser rm -r

policier
la source
2
Cela me demandera de supprimer les fichiers du répertoire, ce n'est pas ce que je veux, je veux uniquement supprimer le lien
Peter Smit
La demande était parce que interactif était défini dans mon .profile. Ajout de la réponse à rm -r. Cela ne fonctionne toujours pas.
Peter Smit
Vous avez quitté le '/' c'est pourquoi il a échoué
bobby le