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)

Peter Smit
quelle
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

Swanand
quelle
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 .

Pelme
quelle
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.

Callum
quelle
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.

user872812
quelle
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
Isapir
quelle
-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

Bobby
quelle
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