Supprimer un lien symbolique vers un répertoire

J'ai un lien symbolique vers un répertoire important. Je veux me débarrasser de ce lien symbolique, tout en gardant le répertoire derrière lui.

J'ai essayé rm et j'ai obtenu rm : cannot remove 'foo'.
J'ai essayé rmdir et j'ai obtenu rmdir : failed to remove 'foo' : Le répertoire n'est pas vide. J'ai ensuite essayérm -f,rm -rfetsudo rm -rf`.

Puis je suis allé chercher mes sauvegardes.

Existe-t-il un moyen de se débarrasser du lien symbolique sans jeter le bébé avec l'eau du bain ?

Solution
# this works
rm foo
# versus
rm foo/

En fait, vous devez lui dire de supprimer un fichier, pas un répertoire. Je pense que la différence entre rm et rmdir existe à cause de différences dans la façon dont la bibliothèque C traite chacun d'eux.

En tout cas, la première devrait fonctionner, tandis que la seconde devrait se plaindre que foo est un répertoire.

Si cela ne fonctionne pas comme ci-dessus, alors vérifiez vos permissions. Vous devez avoir les droits d'écriture sur le répertoire contenant les fichiers pour les supprimer.

Commentaires (11)

Utilisez la commande "unlink" et assurez-vous de ne pas avoir le / à la fin.

$ unlink mySymLink

unlink() supprime un nom du système de fichiers. **Si ce nom était le dernier lien vers un fichier et qu'aucun processus n'a le fichier ouvert, le fichier est supprimé et l'espace qu'il utilisait est rendu disponible pour être réutilisé. Si le nom était le dernier lien vers un fichier mais que des processus ont encore le fichier ouvert, le fichier restera en existence jusqu'à ce que le dernier descripteur de fichier y faisant référence soit fermé.

Je pense que cela peut être problématique si je le lis correctement.

Si le nom faisait référence à un lien symbolique, le lien est supprimé.

Si le nom fait référence à une socket, un fifo ou un périphérique, son nom est supprimé mais les processus qui ont l'objet ouvert peuvent continuer à l'utiliser.

https://linux.die.net/man/2/unlink

Commentaires (11)

Si rm ne peut pas supprimer un lien symbolique, vous devez peut-être examiner les autorisations sur le répertoire qui contient le lien symbolique. Pour supprimer les entrées d'un répertoire, vous devez disposer des droits d'écriture sur le répertoire qui le contient.

Commentaires (0)