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)


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


Ç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.


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.


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.


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

-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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.