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 dannrm -f,rm -rfundsudo 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?

Lösung
# this works
rm foo
# versus
rm foo/

Im Grunde muessen Sie dem Programm sagen, dass es eine Datei loeschen soll, nicht ein Verzeichnis. Ich glaube, der Unterschied zwischen rm und rmdir 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.

Kommentare (11)

Verwenden Sie den Befehl "unlink" und stellen Sie sicher, dass kein / am Ende steht.

$ unlink mySymLink

unlink() löscht einen Namen aus dem Dateisystem. Wenn dieser Name der letzte Link zu einer Datei war und keine Prozesse die Datei geöffnet haben, wird die Datei gelöscht und der von ihr belegte Speicherplatz wird zur Wiederverwendung freigegeben. Wenn der Name der letzte Link zu einer Datei war, aber noch Prozesse die Datei geöffnet haben, bleibt die Datei bestehen, bis der letzte Dateideskriptor, der auf sie verweist, geschlossen wird.

Ich denke, dass dies problematisch sein könnte, wenn ich es richtig verstehe.

Wenn der Name auf einen symbolischen Link verweist, wird der Link entfernt.

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

Kommentare (11)

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.

Kommentare (0)