Titel: EasyLinux 07/2003: Guru-Training, rm
Pfad: http://www.easylinux.de/Artikel/ausgabe/2003/07/076-guru-rm/index.html


Dateien und Verzeichnisse löschen mit rm

Ab in die Tonne

von Elisabeth Bauer


Es reicht schon, im richtigen Leben ständig den Mülleimer leeren zu müssen. Der Befehl rm erspart Ihnen diesen lästigen Job am Computer.

Gleich vorweg gesagt: Löschen in der Shell ist nichts für Unentschlossene und Zögerliche. Wer gerne mal eine Datei wegwirft, um sie fünf Minuten später doch wieder aus dem Mülleimer zu fischen, hält sich besser an das Entsorgungsverfahren, wie man es von Windows und KDE gewohnt ist. Wenn Sie sich aber sicher sind, dass Sie diese -- und genau diese -- Datei wirklich nicht mehr brauchen, ist der Shell-Befehl rm der richtige Kandidat.

Mit rm ist nicht zu spaßen: Was man ihm einmal in den Rachen geworfen hat, spuckt er nicht mehr aus. Deshalb üben wir den Umgang mit ihm auf dem Trockenen -- mit extra dafür erzeugten Dateien auf einer Spielwiese, so dass den wertvollen eigenen Daten nichts passieren kann. Wer ganz auf Nummer sicher gehen will, legt über YaST Module/Sicherheit und Benutzer/Benutzer bearbeiten und anlegen oder unter Red Hat über Systemsteuerung/Benutzer einen eigenen Benutzer (spielkind z. B.) dafür an, loggt sich aus und meldet sich unter dem neuen Benutzernamen an. Wenn Sie jetzt ein Terminal starten, landen Sie im Home-Verzeichnis von spielkind, das keinen Zugriff auf Ihre Daten hat und in /home/ihrwirklicherbenutzer auch nichts löschen darf. Wem der Weg über einen neuen Benutzer zu aufwendig ist, der erzeugt mit mkdir spielwiese ein Extra-Verzeichnis und wechselt mit cd spielwiese dorthin. Der Befehl pwd zeigt das Verzeichnis an, in dem man sich gerade befindet.

Nachdem man so eine sichere Umgebung geschaffen hat, braucht man natürlich auch Dateien, die sich bedenkenlos löschen lassen. Versorgen wir also unser Spielkind mit Sachen zum Spielen. Am schnellsten geht die Spielzeugproduktion mit dem Befehl touch. touch, wie der Name schon sagt, fasst eine Datei an. Das bewirkt genau dasselbe, als ob Sie eine Datei in einem Programm öffnen, nichts verändern und nur speichern würden: Ihr Änderungsdatum wird neu gesetzt. Wenn man touch hingegen mit einem Dateinamen aufruft, den es noch nicht gibt, erzeugt es eine neue, leere Datei. Diese Eigenschaft machen wir uns zunutze und erzeugen mit

touch rassel schnuller plüschpinguin

ein bisschen Spielzeug. Ein ls -l zeigt an, dass in der Spielwiese nun drei frische Dateien liegen, die alle 0 KB groß sind.

Einzelne Dateien löschen

Der Befehl, der eine Datei löscht, ist einfach: rm rassel lässt die Rassel verschwinden. rm fragt dabei in seiner Standardeinstellung unter Linux nicht nach -- es nimmt an, dass Sie wissen, was Sie tun. Um die anderen zwei Dateien zu löschen, gibt es mehrere Möglichkeiten:

rm plüschpinguin schnuller

oder

rm *l*

rm kann man beliebig viele Dateien auf einmal zum Löschen übergeben (die Sie natürlich mit der Tabulatortaste vervollständigen können) und er versteht auch Wildcards: Der zweite Befehl löscht alle Dateien, die an irgendeiner Stelle im Dateinamen ein l haben. Damit lassen sich zum Beispiel gemütlich automatische Sicherheitskopien, die manche Programme anlegen, löschen: rm *.autosave entsorgt zuverlässig alles, was ein .autosave am Ende des Namens trägt.

Ordnerentsorgung

Wer ein ganzes Verzeichnis mitsamt Inhalt löschen will, stolpert leicht über eine Besonderheit von rm. Ein rm verzeichnisname beglückt den Nutzer, statt folgsam das Verzeichnis zu löschen, lediglich mit der lapidaren Meldung: Entfernen von verzeichnisname nicht möglich: Ist ein Verzeichnis. Als ob man das nicht selbst wüsste... rm löscht standardmäßig nur Dateien, aber keine Verzeichnisse. Doch auch das Kommando rmdir, das speziell zum Löschen von Verzeichnissen (engl. Directories) dient, verweigert bei einem gefüllten Ordner den Dienst und löscht nur schon geleerte. Mit der Option -r (für rekursiv) lässt sich rm überzeugen, ein Verzeichnis mit allen enthaltenen Dateien zu entfernen (siehe Abbildung 1). Um dies in der Praxis durchzuexerzieren, basteln wir dem Spielkind einen Baukasten gefüllt mit ein paar Klötzchen:

mkdir Baukasten
cd Baukasten
touch rot gruen gelb

Wechseln Sie in das darüber liegende Verzeichnis:

cd ..

und entsorgen das neu erzeugte Verzeichnis sofort wieder:

rm -r baukasten

Mit ls können Sie sich davon überzeugen, dass es wirklich weg ist.

Abb. 1: Mit rm -r löschen Sie ganze Verzeichnisse.

Mit Netz und doppeltem Boden

Gerade wenn man als Administrator root unterwegs ist, hat ein unbedachtes rm im falschen Verzeichnis schon viel Schaden angerichtet. Der klassische Befehl für denjenigen, der, bevor er seinen Rechner aus dem Fenster wirft, nochmal richtig Amok laufen will, ist rm -rf /. Als root ausgeführt, versucht Linux, das gesamte Dateisystem zu löschen (-f sorgt dafür, dass keine lästigen Nachfragen kommen). Ganz gelingt es ihm zwar nicht, aber unbenutzbar macht man das System so allemal.

Wer solchen Erfahrungen aus dem Weg gehen will, kann sich angewöhnen, rm mit der Option -i (interaktiv) aufzurufen. Auf diese Art fragt rm immer noch mal nach, bevor er wirklich löscht.

Bei einigen Distributionen ist sogar schon vorgesorgt: Wenn Sie unter Red Hat als root angemeldet sind, wird die Eingabe von rm automatisch durch ein rm -i ersetzt (siehe Abbildung 2).

Abb. 2: Als root aufgerufen, fragt rm unter Red Hat beim Löschen lieber noch mal nach.

Dieses Verhalten lässt sich auch für normale Benutzer einstellen. Erstmal gilt es zu erforschen, was hier überhaupt passiert. Der Befehl which ("was für ein") hilft uns weiter: Aufgerufen unter Red Hat als Benutzer root mit which rm, gibt es aus, welches Kommando die Shell aufruft, wenn Sie rm eingeben:

alias rm='rm -i'
        /bin/rm

Diagnose: Hier hat sich jemand verkleidet und einen Alias-Namen zugelegt! In der zweiten Zeile steht der "richtige" rm, der aber gar nicht zum Zug kommt. Damit hat uns die Shell auch gleich verraten, wie wir das Löschkommando nach unseren Wünschen modifizieren können: Das Kommando alias legt Kurzformen für häufig benutzte Shell-Befehle fest. Der Benutzer-rm lässt sich genauso ändern, geben Sie einfach in Ihrer Shell alias rm='rm -i' ein. Ein touch test gefolgt von rm test demonstriert die neue Fähigkeit.

Wer dieses Verhalten dauerhaft machen will, schreibt den eingegebenen Alias-Befehl in die Konfigurationsdatei der Shell -- die .bashrc. Alle Befehle in dieser Datei führt die Shell beim Start aus. Die .bashrc versteckt sich -- und das wortwörtlich -- in Ihrem Home-Verzeichnis. Dass Sie sie unter Umständen noch nie gesehen haben, liegt am Punkt im Namen, der sie für die meisten Datei-Manager und Auswahldialoge unsichtbar macht. Doch ls -a (liste wirklich alles) zeigt sie -- und noch viele andere, ebenfalls versteckte Konfigurationsdateien. An dieser Stelle haben Sie die Wahl: Mit der Eingabe von kwrite .bashrc öffnen Sie die Datei in einem grafischen Texteditor. Die richtigen Gurus nehmen, wenn sie nur schnell eine Konfigurationsdatei ändern wollen, jedoch den Shell-Texteditor vi. Wie Sie in einem Texteditor eine Datei ändern und wieder speichern, wissen Sie vermutlich. An vi hingegen sind wegen seiner ungewohnten Tastaturkommandos schon Viele verzweifelt -- aber keine Sorge, wenn Sie sich drei Tastaturkürzel merken, kann Ihnen vi nichts mehr anhaben.

Starten Sie in Ihrem Home-Verzeichnis vi mit vi .bashrc und bewegen Sie den Cursor mit den Pfeiltasten bis ans Ende der Datei. Jetzt drücken Sie die Taste i, um in den Einfügemodus zu wechseln. Tragen Sie als letzte Zeile den Alias-Befehl von vorher ein, also alias rm='rm -i'. Drücken Sie nun einmal die Escape-Taste (damit kommen Sie in den so genannten Befehlsmodus) und danach (in Großbuchstaben, also mit Umschalt-Taste) ZZ, um die Datei zu sichern und gleichzeitig vi zu beenden. Das war's schon. Haben Sie mitgezählt? Das waren nur zwei Tastaturkürzel. Das dritte ist für den Fall, wenn etwas schiefgeht, Sie sich zum Beispiel vertippt haben: Mit [Esc]:q! (Escape Doppelpunkt q Ausrufezeichen) beenden Sie vi, ohne die Datei zu sichern.

Um das neue Alias zu aktivieren, beenden Sie das Terminal und starten es neu. Alternativ können Sie auch die Shell mit dem Befehl

. .bashrc

dazu bewegen, die Konfigurationsdatei neu einzulesen. (eba)

Der Werkzeugkasten für die Shell

Einige Utensilien sollten Sie beim Arbeiten mit der Shell immer parat haben:

  • [Tabulator]-Taste: vervollständigt Befehle, Datei- und Verzeichnisnamen.
  • [Pfeil-hoch] und [Pfeil-runter]: blättern in der Liste der vorher eingegebenen Kommandos.
  • Anführungszeichen (""): Dateinamen mit Leerzeichen sollten immer von Anführungszeichen umschlossen sein, damit die Shell sie als zusammengehörig erkennt.
  • Backslash (\): Alternativ lässt sich ein Leerzeichen auch mit einem vorangehenden \ maskieren.
  • Wildcards: * interpretiert die Shell als beliebige Zeichen, ? steht für genau ein beliebiges Zeichen.
  • cd verzeichnis wechselt in ein anderes Verzeichnis.
  • ls verzeichnis listet Verzeichnisinhalte.
  • pwd zeigt das aktuelle Verzeichnis an ("print working directory").
  • man kommando zeigt das Handbuch ("manual") zu einem Befehl an.
  • info kommando gibt ausführlichere Informationen als man (nicht zu jedem Kommando vorhanden).

Guru-Training

Es geht auch ohne, aber manchmal eben besser mit der Shell. Nach diesem Motto stellen wir in dieser Rubrik Profi-Tipps zum Umgang mit Linux vor. Mit der gefürchteten DOS-Kommandozeile hat die Linux-Shell nicht viel gemein: Dank automatischer Namensvervollständigung und anderen praktischen Features ist sie das Profiwerkzeug unter Linux, mit dem sich viele alltägliche Aufgaben einfach, elegant und effizient erledigen lassen. Sie müssen dazu nicht tausende von Kommandos auswendig kennen -- oft erzielen ein paar kurze Befehle schon große Wirkung.

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.


Feedback zu dieser Seite | Datenschutz | © 2017 COMPUTEC MEDIA GmbH | Last modified: 2007-01-25 16:20