720836

Linux-Shell: Dateien mit speziellen Namen löschen

14.01.2004 | 10:50 Uhr |

Sie haben mit der Kommandozeile experimentiert. Dabei wurden offenbar einige Parameter als Dateinamen interpretiert, und als Ergebnis haben Sie nun die Dateien "*" und "-C", die Sie nicht mehr entfernen können. Bei "*" beispielsweise will der Befehl "rm" immer gleich den gesamten Verzeichnisinhalt löschen, was Sie natürlich nicht möchten. Wir erklären Ihnen , wie Sie die Dateien wieder löschen können.

Anforderung

Einsteiger

Zeitaufwand

Mittel

Frage:

Sie haben mit der Kommandozeile experimentiert. Dabei wurden offenbar einige Parameter als Dateinamen interpretiert, und als Ergebnis haben Sie nun die Dateien "*" und "-C", die Sie nicht mehr entfernen können. Bei "*" beispielsweise will der Befehl "rm" immer gleich den gesamten Verzeichnisinhalt löschen, was Sie natürlich nicht möchten.

Antwort:

Dass Sie mit "rm *" versucht haben, die gleichnamige Datei zu löschen, war sehr riskant. Normalerweise löscht dieser Befehl den gesamten Inhalt des aktuellen Verzeichnisses ohne Nachfrage. Viele Linux-Distributoren haben aber per Alias voreingestellt, dass "rm" generell mit dem Parameter -i aufgerufen wird - dann fragt der Befehl nach. Zur Sicherheit sollten Sie aber selbst den Parameter einsetzen.

Zu Ihrer konkreten Frage: Die Bash-Shell benutzt den Backslash (\), um Sonderzeichen wie "*" oder "?" ihre Bedeutung zu nehmen. Um also eine Datei mit dem Namen "*" zu löschen, geben Sie

rm \*

ein. Bei Dateien, die mit einem Strich beginnen, liegt der Fall anders: Der Strich ist für Bash kein Sonderzeichen, so dass der Backslash nichts nützt. Hier weist "rm" dem Zeichen eine besondere Bedeutung zu, nämlich die, einen Parameter einzuleiten. Doch mit "- -" (zwei Striche) teilen Sie "rm" mit, dass alles Folgende auf keinen Fall ein Parameter ist. Eine Datei "-C" löschen Sie daher mit "rm - - -C".

0 Kommentare zu diesem Artikel
720836