Question

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 récupéré rm: impossible de supprimer 'foo' .
J'ai essayé rmdir et j'ai récupéré rmdir: échec de la suppression de 'foo': répertoire non vide
J'ai ensuite progressé dans rm -f , rm -rf et sudo rm -rf

.

Ensuite, je suis allé chercher mes sauvegardes.

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

Était-ce utile?

La solution

# this works
rm foo
# versus
rm foo/

En gros, vous devez lui dire de supprimer un fichier et non de supprimer un répertoire. Je crois que la différence entre rm et rmdir existe en raison de différences dans la manière dont la bibliothèque C traite chacune de ces applications.

Quoi qu'il en soit, le premier devrait fonctionner, tandis que le second devrait se plaindre que foo soit un répertoire.

Si cela ne fonctionne pas comme ci-dessus, vérifiez vos autorisations. Vous devez disposer d'une autorisation en écriture sur le répertoire contenant pour supprimer des fichiers.

Autres conseils

utilisez le lien " unlink " commande et assurez-vous que pas 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 ne l'a ouvert, le fichier est supprimé et l'espace utilisé était mis à disposition pour être réutilisé.   Si le nom était le dernier lien vers un fichier mais que le processus reste ouvert pour tous les processus, le fichier restera en place jusqu'à la fermeture du dernier descripteur de fichier le référant.

Je pense que cela pourrait poser problème si je le lis correctement.

  

Si le nom fait 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 dont l'objet est ouvert peuvent continuer à l'utiliser.

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

rm doit supprimer le lien symbolique.

skrall@skrall-desktop:~$ mkdir bar
skrall@skrall-desktop:~$ ln -s bar foo
skrall@skrall-desktop:~$ ls -l foo
lrwxrwxrwx 1 skrall skrall 3 2008-10-16 16:22 foo -> bar
skrall@skrall-desktop:~$ rm foo
skrall@skrall-desktop:~$ ls -l foo
ls: cannot access foo: No such file or directory
skrall@skrall-desktop:~$ ls -l bar
total 0
skrall@skrall-desktop:~$ 

Utilisez rm symlinkname mais n'incluez pas de barre oblique à la fin (n'utilisez pas: rm symlinkname / ). On vous demandera ensuite si vous souhaitez supprimer le lien symbolique y pour répondre par l'affirmative.

En supposant qu'il s'agisse en réalité d'un lien symbolique,

$ rm -d symlink

Cela devrait être compris, mais comme cela ne peut pas être activé, le code latent destiné à un autre cas qui n'existe plus mais qui se trouve bien faire ici est ici.

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

En supposant que votre configuration ressemble à quelque chose comme: ln -s / mnt / bar ~ / foo , vous devriez pouvoir faire un rm foo sans problème. Si vous ne le pouvez pas, assurez-vous d’être le propriétaire du foo et d’avoir le droit d’écrire / exécuter le fichier. La suppression de toto ne touchera pas la barre , sauf si vous le faites de manière récursive.

Sous CentOS, exécutez simplement rm linkname et le programme vous demandera de "supprimer le lien symbolique?". Tapez Y et Entrée , le lien disparaîtra et le répertoire sera sécurisé.

J'ai eu ce problème avec MinGW (en fait, Git Bash) exécuté sur un serveur Windows. Aucune des suggestions ci-dessus n'a semblé fonctionner. En fin de compte, une copie du répertoire a été créée au cas où vous avez ensuite supprimé le lien symbolique dans l'Explorateur Windows, puis supprimé l'élément dans la corbeille. Cela faisait des bruits de suppression de fichiers, mais pas du tout. Faites une sauvegarde cependant!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top