logoOL.gif
user_gelb_schwarz_or.gif
logoUL.gif
logoUR.gif claim.gif
LinuxUser LinuxCommunity EasyLinux Linux-Magazin International
      Anzeige
      Anzeige

Erschienen in LinuxUser 05/2000

Zu Befehl

Auf Nimmerwiedersehen -- rm

von Heike Jurzik
 [ Titelbild ]


Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen -- wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Weg mit dem Datenmüll -- in dieser Folge geht es um die Befehle rm (für englisch remove: etwas wegnehmen, entfernen) und rmdir (für remove directory: ein Verzeichnis entfernen). Um den Frühjahrsputz, der in der letzten "Zu Befehl"-Folge angekündigt wurde, komplett zu machen, lernen Sie heute einige Tricks und Kniffe zum Löschen von Dateien und Verzeichnissen.

Sind Sie sich sicher...?

Normalerweise führt der Aufruf rm datei prompt zum gewünschten Ergebnis. Ohne den Benutzer wieder und wieder zu fragen, ob er die Datei wirklich löschen will, tut Linux das, was man ihm sagt. Unix-typisch gilt: Weg ist weg -- einmal gelöschte Daten sind futsch. Möchte man daher doch lieber die Frage rm: remove `datei'? haben, hängt man an das rm einfach die Option -i dran. Wiederholung aus der letzten Folge: Statt -i kann man die lange Form --interactive verwenden und sich überlegen, ob man das Kommando in dieser Art als Alias aufnimmt (alias rm="rm -i"). Und auch hier gilt wieder: Vorsicht, wenn Sie an einem fremden System ohne die Neudefinitionen von Standardkommandos arbeiten!

Und wann fragt das System von selbst nach? Wenn es sich um als read only gekennzeichnete Dateien handelt.

huhn@huehnerstall ~ > rm datei
rm: remove `datei', overriding mode 0400?


read only: Über Rechte von Dateien wurde schon einmal berichtet: r steht für read (lesen), w für write (schreiben) und x für execute (ausführen). Eine Datei versieht man mit einem Schreibschutz, wenn man sie vor unbeabsichtigtem Überschreiben oder Löschen schützen möchte, also chmod a-w datei. Dieser Aufruf entfernt alle eventuell vorhandenen Schreibrechte der Datei -- das a steht hier für all (also user, group und other). Alles, was mit Dateirechten und -besitzern, also den Befehlen chmod und chown, zu tun hat, wird noch einmal Gegenstand einer eigenen Folge sein.

Wenn alle diese "lästigen" Abfragen aber einmal nicht gewünscht sein sollten, kann man sie mit der Erweiterung rm -f (--force) umgehen. Diese Option hebt die Wirkung des --interactive-Flags und des Schreibschutzes für Dateien auf und ist mit Vorsicht zu genießen.

Das große Reinemachen

Falls es einmal um ganze Verzeichnisse geht, die verschwinden sollen, kommt die Option -r für --recursive ins Spiel. Mit diesem Kommando putzen Sie rekursiv bis in den letzten Winkel das Verzeichnis samt aller Unterverzeichnisse leer. Ein rm -rf / von root ausgeführt heißt also nicht "read mail really fast", sondern entsorgt kurzerhand und sehr sorgfältig das komplette System.

Wem dies zu riskant ist, verwendet statt rm -r das Kommando rmdir (remove directory). Dieser Befehl löscht nur leere Verzeichnisse. Sollten sich also einmal Dateien versteckt halten, wird man gewarnt: rmdir: verzeichnis: Directory not empty.

Sonderzeichen? -- Kein Problem!

Einmal im Editor nicht aufgepasst, und schon ist es passiert: Man hat eine Datei mit einem falschen Namen angelegt, die jetzt statt recht.txt z. B. -recht.txt heißt. Dieser kleine Bindestrich kann für echte Verwirrung sorgen, wenn man das File wieder loswerden möchte. Sowohl rm als auch rm -f können mit dem Dateinamen scheinbar nichts anfangen:
huhn@huehnerstall ~ > rm -recht.txt
rm: invalid option -- e
Try `rm --help' for more information.
Das rm-Kommando interpretiert das -r und kann mit dem Rest (echt.txt) nichts anfangen, denn es ist durchaus möglich, mehrere sinnvolle Parameter miteinander zu kombinieren (also z. B. rm -rf verzeichnis als Kurzform von rm -r -f verzeichnis) - das e ist keiner davon. Kein Grund zu verzweifeln, es gibt zwei Möglichkeiten, eine solche Datei zu löschen. Ein rm ./-recht.txt (also eine Angabe relativ zum aktuellen Verzeichnis ".") sorgt dafür, dass der Dateiname nicht als Optionsliste interpretiert wird.

Eine elegantere Lösung ist eine spezielle Option für die GNU-Utilities mit dem doppelten Bindestrich: -- sorgt dafür, dass alles nach diesen zwei Bindestrichen nicht mehr als Parameter, sondern als Argument (also Gegenstand der Operation) aufgefasst wird. In diesem Fall tippt man also rm -- -recht.txt. Beide Möglichkeiten beschränken sich natürlich nicht auf den Befehl rm, sondern sind auch mit anderen Kommandos, z. B. mv und cp, anwendbar.


GNU: Das GNU-Projekt setzte sich zum Ziel, ein freies Unix-artiges Betriebssystem zu schaffen und begann damit, all die Kommandozeilenbefehle zu implementieren, die man zum sinnvollen Arbeiten braucht. Zusammen mit dem Linux-Betriebssystemkern (dem "Kernel") bilden diese GNU-Utilities die Grundlage aller Linux-Distributionen, man setzt sie aber auch gern mit anderen Betriebssystemen ein. Das rekursive ("selbstbezügliche") Akronym GNU steht übrigens für "GNU is Not UNIX" und distanziert sich damit vom Ur-UNIX von AT&T.

Der Bindestrich am Anfang von Dateinamen ist aber nicht der einzige Stolperstein. Versuchen Sie mal, eine Datei namens file with space zu löschen:

huhn@huehnerstall ~ > rm file with space
rm: file: No such file or directory
rm: with: No such file or directory
rm: space: No such file or directory
Die Leerzeichen im Dateinamen kann man umgehen, indem man den Namen in "Anführungszeichen" setzt oder einen Backslash \ vor jeden Space setzt, also entweder rm "file with space" oder rm file\ with\ space.

Wo ist denn der Schlusssatz hin? Habe ich den vielleicht gelöscht? Wie man nach Dateien oder Zeichenketten sucht, wird in der nächsten Folge gezeigt: Es geht um grep und find! (hge)

Die Autorin

Heike Jurzik studiert Germanistik, Informationsverarbeitung und Anglistik und jobbt nebenbei in der Benutzerberatung des Rechenzentrums der Uni Köln. Sie arbeitet seit 1996 auf Linux-Systemen. Und weil die Tastatur als Tasteninstrument ausreicht, spielt sie statt Klavier lieber Violine in einem Sinfonieorchester und liest bei Gelegenheit gern ein gutes Buch.

Copyright © 2000 Linux New Media AG

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Seite drucken | Feedback zu dieser Seite | Datenschutz | © 2019 COMPUTEC MEDIA GmbH

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [EasyLinux] [Linux-Community]