Entfernen eines Symlinks zu einem Verzeichnis
Ich habe einen Symlink zu einem wichtigen Verzeichnis. Ich möchte diesen Symlink loswerden, aber das Verzeichnis dahinter behalten.
Ich habe rm
versucht und erhalte zurück rm: cannot remove 'foo'
.
Ich habe es mit rmdir
versucht und erhalte rmdir: failed to remove 'foo': Verzeichnis nicht leer". Ich habe dann
rm -f,
rm -rfund
sudo rm -rf` durchlaufen
Dann habe ich meine Backups gesucht.
Gibt es eine Möglichkeit, den Symlink loszuwerden, ohne das Kind mit dem Bade auszuschütten?
1061
3
Im Grunde muessen Sie dem Programm sagen, dass es eine Datei loeschen soll, nicht ein Verzeichnis. Ich glaube, der Unterschied zwischen
rm
undrmdir
besteht aufgrund von Unterschieden in der Art, wie die C-Bibliothek beide behandelt.Auf jeden Fall sollte das erste funktionieren, während das zweite sich darüber beschweren sollte, dass foo ein Verzeichnis ist.
Wenn es nicht wie oben beschrieben funktioniert, dann überprüfen Sie Ihre Berechtigungen. Sie brauchen Schreibrechte für das Verzeichnis, das foo enthält, um Dateien zu entfernen.
Verwenden Sie den Befehl "unlink" und stellen Sie sicher, dass kein / am Ende steht.
Ich denke, dass dies problematisch sein könnte, wenn ich es richtig verstehe.
Wenn sich der Name auf ein Socket, Fifo oder Gerät bezieht, wird der Name entfernt, aber Prozesse, die das Objekt geöffnet haben, können es weiterhin verwenden.
https://linux.die.net/man/2/unlink
Wenn rm einen Symlink nicht entfernen kann, müssen Sie vielleicht die Berechtigungen für das Verzeichnis überprüfen, das den Symlink enthält. Um Verzeichniseinträge zu entfernen, benötigen Sie Schreibrechte für das enthaltende Verzeichnis.