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é de rm
revenir rm: cannot remove 'foo'
.
J'ai essayé rmdir
et je suis revenu , rmdir: failed to remove 'foo': Directory not empty
je puis progressais à travers rm -f
, rm -rf
etsudo rm -rf
Ensuite, 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?
rm -r link/
supprime le contenu sur la cibleThen I went to find my back-ups
- Cela m'a fait rire.Réponses:
Fondamentalement, vous devez lui dire de supprimer un fichier , pas de supprimer un répertoire . Je crois que la différence entre
rm
etrmdir
existe en raison des différences dans la façon dont la bibliothèque C traite chacune.En tout cas, le premier devrait fonctionner, tandis que le second devrait se plaindre du fait 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.
la source
rm -rf folderName
(sans suivi /) pour supprimer le lien symbolique. Amazon Linux se comporte de cette manière dans certaines circonstances, par exemple.-r
avec un lien symbolique sauf si vous voulez tout perdre à l'intérieur.-f
ne devrait pas non plus être nécessaire, sauf peut-être pour remplacer les autorisations de fichier.unlink
n'a aucun lien avec l'ln
opération de «liaison» AKA. Le nomunlink
fait référence au processus de dissociation / suppression d'un fichier de la table de fichiers du système de fichiers afin que le contenu se détache de toute référence à eux - ils sont dissociés. C'est un nom déroutant qui est carrément trompeur lorsqu'il est appliqué aux liens et aux liens symboliques en particulier.unlink
fonctionnera avec les liens symboliques car il fonctionne avec n'importe quel fichier, quel que soit son type.alias rm="rm -i"
a sauvé plus de peaux que n'importe quoi d'autre, je pense.utilisez la commande "unlink" et assurez-vous de ne pas avoir le / à la fin
Je pense que cela peut être problématique si je le lis correctement.
https://linux.die.net/man/2/unlink
la source
~/c/a/file
,/c/b/
avecln -s ~/c/a ~/c/b/
. Dans~/c/b/
,rm a/
ne fonctionne pas,rm -rf a/
ne vide que l'originala
.unlink a
fonctionne parfaitement etunlink a/
ne fait rien.unlink
est simplement un alias pourrm
. Va montrer que larm
discipline appropriée doit être utilisée lorsque vous traitez avec n'importe quelle partie de votre structure de répertoire.rm -f
il supprimera silencieusement un lien, qu'il existe ou non, alors qu'ilunlink
se plaindra si le lien n'est pas présent. Il n'y a pas d'option `-f 'équivalente pour délier, rend le script plus complexe.unlink
peut supprimer des fichiers normaux. son moins fonctionnel querm
et non spécifique aux liens symboliques.rm
ne supprime pas non plus les répertoires sans l'-r
indicateur. Je recommande donc de préférer rm, il a des drapeaux pour verbeux et interactif; ainsi que des messages d'avertissement et d'erreur significatifs.rm devrait supprimer le lien symbolique.
la source
Utilisez
rm symlinkname
mais n'incluez pas de barre oblique à la fin (n'utilisez pas:)rm symlinkname/
. Il vous sera alors demandé si vous souhaitez supprimer le lien symbolique,y
pour répondre oui.la source
En supposant qu'il s'agit en fait d'un lien symbolique,
Il devrait le comprendre, mais comme il ne peut pas, nous pouvons activer le code latent qui était destiné à un autre cas qui n'existe plus mais qui fait la bonne chose ici.
la source
Si rm ne peut pas supprimer un lien symbolique, vous devrez 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 conteneur.
la source
En supposant que votre configuration est quelque chose comme:,
ln -s /mnt/bar ~/foo
alors vous devriez pouvoir fairerm foo
sans problème. Si vous ne le pouvez pas, assurez-vous que vous en êtes le propriétairefoo
et que vous êtes autorisé à écrire / exécuter le fichier. La suppressionfoo
ne touchera pasbar
, sauf si vous le faites récursivement.la source
Sur CentOS, lancez-le
rm linkname
et il vous demandera de "supprimer le lien symbolique?". Tapez Yet Enter, le lien aura disparu et le répertoire sera sûr.la source
J'ai eu ce problème avec MinGW (en fait Git Bash) fonctionnant sur un serveur Windows. Aucune des suggestions ci-dessus ne semble fonctionner. En fin de compte, une copie du répertoire a été faite au cas où puis supprimé le lien logiciel dans l'Explorateur Windows, puis supprimé l'élément dans la corbeille. Il a fait du bruit comme s'il supprimait les fichiers mais ne l'a pas fait. Faites une sauvegarde cependant!
la source