Ein Link in Linux ist eine spezielle Datei, die auf eine andere Datei oder ein anderes Verzeichnis verweist. Auf diese Weise kann eine Datei an mehreren Stellen gleichzeitig abgelegt werden. Wenn die Originaldatei gelöscht wird, bleibt der Link zu ihr erhalten. Dies kann zu Abstürzen führen und verstopft generell das System.
Zunächst wollen wir Ihnen erklären, wie Sie überprüfen können, ob die Datei tatsächlich ein Link ist. Dies geschieht am einfachsten mit dem Dienstprogramm ls
. Danach sehen wir uns drei Methoden zur Entfernung an, die jeweils ihre eigenen Besonderheiten haben.
Mit Hilfe von ls
können Sie sich bequem Informationen über die Datei anzeigen lassen. Um das Dienstprogramm zu verwenden, geben Sie ihm die Option -l
und den Pfad an. Nehmen wir als Beispiel die Datei ~/symlinks/link_1
:
$ ls -l ~/symlinks/link_1
Sie können einen ganzen Katalog auf Links überprüfen:
$ ls -l ~/symlin
Eine Datei, die nicht benötigt wird, ist mit einem charakteristischen Pfeil hinter ihrem Namen gekennzeichnet.
Mit dem Befehl rm
kann man jede Datei im Linux-Dateisystem löschen, auch Links. Das heißt, er ist für unsere Aufgabe geeignet. Es ist wichtig, hier zu erwähnen, dass die ursprüngliche Datei oder das ursprüngliche Verzeichnis durch das Löschen des Links nicht beeinträchtigt wird.
Führen Sie den Befehl im Terminal aus:
$ rm ~/symlinks/link_1
Um detaillierte Informationen über den Vorgang zu erhalten, fügen Sie dem Befehl die Option -v
hinzu:
$ rm -v ~/symlinks/link_1
Zusätzlich können Sie überprüfen, ob der Link aus dem Verzeichnis verschwunden ist. Verwenden Sie dazu den bereits beschriebenen Befehl ls
.
Jetzt wissen Sie, wie Sie einen symbolischen Link unter Linux entfernen können.
Das Dienstprogramm unlink
dient dazu, Dateien aus dem Linux-Dateisystem zu entfernen. Es muss nur den Pfad zu dem Link angeben:
$ unlink ~/symlinks/link_1
Im Rahmen der vorliegenden Aufgabe arbeiten rm und unlink fast identisch. Gehen wir nun zur letzten Methode über.
Mit Hilfe des Befehls find
können Sie Links in einem bestimmten Verzeichnis suchen und löschen. Das bedeutet, dass Sie nicht zusätzlich ls
verwenden müssen.
Im Gegensatz zu den beiden vorangegangenen Optionen verfügt er über recht fortgeschrittene Funktionen, z. B. die Festlegung von Suchkriterien. Aber auch aus diesem Grund ist die Syntax nicht so einfach.
Um zu suchen, müssen Sie ein Verzeichnis und einige Parameter angeben:
$ find ~/symlinks/ -type l -print
Der Parameter -type l
wird benötigt, um nur symbolische Links auszuwählen, -print
, um den vollständigen Namen auszugeben. Und mit Hilfe von -maxdepth
können Sie die Tiefe der Suche nach verschachtelten Verzeichnissen angeben. Wenn Sie 1 angeben, wird die Suche nur im Verzeichnis selbst durchgeführt, ohne Anhänge:
$ find ~/symlinks/ -maxdepth 1 -type l -print
Sobald sich viele Links in einem Verzeichnis befinden, können Sie ein Suchmuster für den Befehl find
angeben. Nehmen wir als Beispiel eine Situation an, in der wir nur versteckte Links finden wollen, deren letztes Änderungsdatum nicht länger als 30 Tage zurückliegt:
$ find ~/data/ -type l -name ".*" -mtime -30 -print
Es wurden zwei Kriterien hinzugefügt:
-name
- Suche nach Name
.-mtime
- nach der Änderungszeit.Alle gefundenen Links können nach dem angegebenen Muster gelöscht werden. Zu diesem Zweck wird -print
durch -delete
ersetzt:
$ find ~/data/ -type l -name ".*" -mtime -30 -delete
Am Ende der Anweisung geht es um das Suchen und Löschen von defekten Links, die ins Leere führen, zum Beispiel nach dem Löschen der ursprünglichen Datei oder des Verzeichnisses. Hierfür eignet sich der Parameter -xtype l
. -print
ist für die Ausgabe nicht erforderlich:
$ find ~/broken_links/ -xtype l
Als Ergebnis werden alle defekten Links im Terminal angezeigt. Um sie zu entfernen, fügen Sie -delete
am Ende des Befehls hinzu:
$ find ~/broken_links/ -xtype l -delete
Damit ist die Anleitung zum Löschen eines Links in Linux abgeschlossen.