2009-07-20 12:40:03 +0000 2009-07-20 12:40:03 +0000
101
101

Wie entfernt man einen symbolischen Link auf ein Verzeichnis?

Ich habe einen symbolischen Link mit dem folgenden Befehl erstellt:

ln -s ../test5

Ich möchte ihn jetzt entfernen, aber mein rm schlägt fehl:

$ rm -Rf test5/
rm: cannot remove `test5/': Not a directory
$ rm test5/
rm: cannot remove directory `test5/': Is a directory
$ rmdir test5/
rmdir: test5/: Not a directory
$rm -r test5/
rm: cannot remove `test5/': Not a directory

$ls -l
 0 lrwxrwxrwx 1 peter peter 8 Jul 20 15:30 test5 -> ../test5/

Wie kann ich meinen symbolischen Link entfernen? (Ubuntu 8.10, bash)

Antworten (6)

122
122
122
2009-07-20 12:51:01 +0000

Entfernen Sie den abschließenden Schrägstrich:

Mit Prompt:

$ rm test5

Ohne Prompt:

$ rm -f test5

21
21
21
2009-07-20 12:54:12 +0000

Versuchen Sie rm test5 (ohne den Übungsschrägstrich).

Der Schrägstrich zeigt an, dass ‘test5’ ein Verzeichnis ist, während es sich in Wirklichkeit um eine Datei handelt, die auf ein Verzeichnis verlinkt.

14
14
14
2009-07-20 13:06:36 +0000

Sie können das Entfernen des abschließenden Schrägstrichs ausführen:

$ rm test5

Dadurch wird die Datei (d. h. der Symlink) entfernt.

Alternativ dazu können Sie unlink verwenden:

$ unlink test5

Auch hier müssen Sie den abschließenden Schrägstrich weglassen, da Sie versuchen, den Symlink zu entfernen, nicht das Verzeichnis.

0
0
0
2019-05-02 03:05:12 +0000

Das Problem im OP ist das nachgestellte /, so dass test5/ einen Fehler auslöst, aber test5 funktioniert.

Ich ziehe es vor, unlink statt rm zu verwenden, da meine Absicht klarer ist und es keine Chance gibt, versehentlich das echte Verzeichnis anstelle des Links zu entfernen. Stellen Sie sicher, dass nach dem Verzeichnisnamen kein nachgestelltes / steht, z. B:

unlink test5
0
0
0
2018-02-14 23:23:37 +0000

Wenn Sie die Autovervollständigung verwenden, um den zu löschenden Link zu benennen, kann es sein, dass Sie keinen abschließenden Schrägstrich sehen, aber er ist “halb da”, und dieser unsichtbare Schrägstrich führt trotzdem zu einem Löschfehler, wenn Sie versuchen, den Link zu entfernen.

Geben Sie also in diesem Fall die zu löschende Verknüpfung als “test5” Zeichen für Zeichen ein, z. B. rm test5.

-1
-1
-1
2009-07-20 12:42:27 +0000

Ich komme mir dumm vor zu fragen, aber haben Sie es mit rm -r versucht? Da es ein symbolischer Link ist, sollte es das Ziel nicht löschen.

Bearbeiten: Habe es gerade probiert, es ist korrekt

Bearbeiten 2: rmdir sagt in der ersten Zeile der Manpage, dass es leere Verzeichnisse löscht. Ich würde denken, weil es ein Link ist, hat es das Verzeichnis-Bit in seinen Dateieigenschaften überprüft, aber weil rmdir nicht vermutet, dass das der Fall ist, spuckt es Fehler aus. Verwenden Sie einfach rm -r