Wie entferne ich einen symbolischen Link zu einem Verzeichnis?


100

Ich habe eine symbolische Verbindung mit folgendem Befehl hergestellt:

ln -s ../test5

Ich möchte es 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)


4
TIPP: rm -r link/Löscht den Inhalt des Ziels
Gayan Weerakutti

Antworten:


121

Entfernen Sie den abschließenden Schrägstrich:

Mit Aufforderung:

$ rm test5

Ohne Aufforderung:

$ rm -f test5


Es heißt permission denied.
1,21 Gigawatt

1
Ohne Schrägstrich. Ist test5/also falsch.
Pylover

20

Probieren Sie es aus rm test5
(ohne den Übungsstrich).

Der Schrägstrich zeigt an, dass 'test5' ein Verzeichnis ist, während es sich tatsächlich um eine Datei handelt, die mit einem Verzeichnis verknüpft ist .


14

Sie können den folgenden Schrägstrich entfernen:

$ rm test5

Dadurch wird die Datei (dh der Symlink) entfernt.

Alternativ können Sie die Verknüpfung aufheben:

$ unlink test5

Auch hier müssen Sie den abschließenden Schrägstrich weglassen, da Sie versuchen, die Verknüpfung des Symlinks und nicht des Verzeichnisses aufzuheben.


0

Wenn Sie die automatische Vervollständigung verwenden, um den zu löschenden Link zu benennen, wird möglicherweise kein abschließender Schrägstrich angezeigt, der jedoch zur Hälfte vorhanden ist. Dieser unsichtbare Schrägstrich gibt beim Entfernen des Links immer noch den Löschfehler aus.

Geben Sie in diesem Fall Zeichen für Zeichen den zu löschenden Link als "test5" ein, wie z. rm test5.


1
Noch nie von unsichtbaren Schrägstrichen gehört. Welche Schale macht das?
Kamil Maciorowski

Ich denke, es ist möglicherweise ein Verweis auf das Zeichen, das durch Zeilenumbruch + Cursor versteckt wird?
Bertieb

0

Das Problem im OP ist das Trailing /, also test5/wirft es einen Fehler, test5funktioniert aber .

Ich ziehe es zu verwenden , unlinkanstatt rmwie meine Absicht ist klarer , und es gibt keine Möglichkeit , versehentlich das reale Verzeichnis anstelle des Link zu entfernen. Stellen Sie sicher, dass /nach dem Verzeichnisnamen keine Nachkommastellen stehen , zB:

unlink test5

-1

Ich fühle mich albern gefragt, aber hast du es versucht rm -r? Da es sich um eine symbolische Verknüpfung handelt, sollte das Ziel nicht gelöscht werden.

Edit: Habe es gerade ausprobiert, es ist richtig

Edit 2: rmdir sagt in der ersten Zeile der Manpage, dass leere Verzeichnisse gelöscht werden. Ich würde denken, weil es ein Link ist, bei dem das Verzeichnisbit auf seine Dateieigenschaften überprüft wurde, aber weil rmdir nicht den Verdacht hat, dass es Fehler ausspuckt. Verwenden Sie einfach rm -r


2
Dies wird mich bitten, die Dateien im Verzeichnis zu löschen, das ist nicht was ich will, ich möchte nur den Link löschen
Peter Smit

Die Frage war, weil interaktiv in meinem .profile definiert wurde. Die Antwort auf rm -r wurde hinzugefügt. Es funktioniert immer noch nicht.
Peter Smit

Du hast das nachgestellte '/' verlassen, deshalb ist es fehlgeschlagen
Bobby
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.