Home / LinuxUser / 2000 / 06 / Shell-Tipps

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

KDE Plasma Workspaces 4.8
(306 Punkte bei 32 Stimmen)
SUSE12
(173 Punkte bei 4 Stimmen)
Pardus Linux am Ende?
(164 Punkte bei 4 Stimmen)
OpenSuse 12.1-Service Kit 01/12
(161 Punkte bei 4 Stimmen)
Meinst Du: Patch CD Updates?
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Löschen und Restaurieren von Dateien

Shell-Tipps

01.06.2000 Unter Linux werden wie in jedem Betriebssystem immer wieder Dateien und Verzeichnisse gelöscht. Normalerweise treten dabei keine Probleme auf. Es gibt aber einige Besonderheiten, über die sich ein Anwender im Klaren sein sollte. Einige Problemfälle und mögliche Lösungen werden hier kurz vorgestellt.

Löschen von Dateien mit rm

Der üblicherweise auf der Shell eingesetzte Befehl zum Löschen von Dateien heißt rm (remove file) und gehört zu den GNU file utilities. Sein Einsatz ist unproblematisch und bewirkt, dass der im Argument übergebene Name aus dem übergeordneten Verzeichniskatalog ohne weiteren Kommentar entfernt wird.

$> rm file

Damit löscht rm zwar die Zugriffsmöglichkeit auf die Datei, aber nicht deren Datenblöcke. Wenn für die Zieldatei keine Schreibrechte vereinbart sind (das w-Attribut also fehlt), fragt der Befehl nach, ob die schreibgeschützte Datei wirklich entfernt werden soll:

$> rm file
rm: schreibgeschützte Datei <C>file<C> entfernen?

y gefolgt von RETURN veranlasst rm, den Versuch zu unternehmen, diese Datei zu löschen. Ein solcher Versuch muss aber nicht unbedingt von Erfolg gekrönt sein. Wenn für das Verzeichnis, in dem die Datei vorhanden ist, kein Schreibrecht gesetzt wurde, kann der Dateieintrag auch nicht entfernt werden. Folglich bleibt die Datei erhalten. Der rm-Befehl verfügt über einige nützliche Optionen: Mit -i (oder --interactive) wird rm in einen interaktiven Modus versetzt. In diesem Modus muss das Löschen jeder Datei wie oben gezeigt bestätigt werden, bevor sie aus dem Verzeichnis gelöscht wird. Für Linux-Einsteiger kann es sinnvoll sein, wenn diese Option bei dem Aufruf von rm voreingestellt ist, etwa durch folgende Definition in der Datei $HOME/.bashrc:

$> alias rm='rm -i'

-f (oder --force) wirken wie eine Umkehrung zum interaktiven Modus. Diese Optionen erzwingen das Löschen, wobei die Nachfrage unterdrückt wird. Verzeichnisse können mit rm nur zusammen mit der Option -r (oder -R bzw. --recursive) gelöscht werden.

$> rm -riv dir
rm: in Verzeichnis "dir" absteigen? y RETURN
entfernen aller Einträge in Verzeichnis dir
rm: "dir/file" entfernen?  y RETURN
removing dir/file  y RETURN
Entfernen des Verzeichnises selbst: dir

In diesem Beispiel löscht rm zunächst den Inhalt des Verzeichnisses, anschließend – wenn es leer ist, und nur dann – das Verzeichnis. Die Option -v (oder --verbose) veranlasst rm, alle Aktionen zu kommentieren. Probleme beim Löschen treten beispielsweise dann auf, wenn der Name der zu löschenden Datei mit einem Minuszeichen beginnt:

$> rm -del
rm: Ungültige Option -- "e"
Versuchen Sie "rm --help" für weitere
Informationen.

In diesem Beispiel hat rmden Dateinamen als Option interpretiert. Was ist in so einem Fall zu tun? Eine einfache Lösung für derartige Probleme mit GNU-Befehlen bietet die Spezialoption --. Sie bewirkt, dass alle in der Befehlszeile rechts von ihr stehenden Teile nicht mehr als Optionen, sondern als Textargumente interpretiert werden.

$> rm -- -del

Zeichen, die von der Shell selbst ausgewertet werden (Metazeichen), müssen immer maskiert werden, wenn sie in Dateinamen auftreten:

$> rm file#1*

Mit dieser Befehlszeile versucht rm, Dateien zu entfernen, deren Namen mit den Buchstaben file#1 beginnen. (Das Sternchen ist ein Wildcard-Zeichen und steht für beliebige Zeichenketten.)

$> rm 'file#1*'

So wird eine Datei mit dem Namen file#1* gelöscht. Alternativ könnte auch ein Backslash vor die Metazeichen im Dateinamen gesetzt werden. Entsprechendes gilt übrigens auch für Leerzeichen in Dateinamen:

$> rm file#1\*
$> rm Dateiname\ mit\ Leerzeichen

Sicheres Löschen

Mit rm können zwar Dateien aus dem Dateisystem entfernt werden, aber die Datenblöcke der Dateien bleiben dabei völlig unberührt, zumindest solange, bis eine neue Datei diese Blöcke wieder belegt. Diese Tatsache machen wir uns weiter unten noch zunutze. Bei sensiblen Daten kann dieser Mechanismus unzureichend sein, da prinzipiell die Möglichkeit besteht, Daten aus gelöschten Dateien zurückzugewinnen. Daher muss also eine Möglichkeit gefunden werden, die Datenblöcke vor dem Löschen mit "Datenmüll" zu überschreiben. Danach erst wird eine entsprechende Datei aus dem Dateisystem gelöscht. Eine einfache Lösung für dieses Problem bietet folgendes Script an:

#! /bin/sh
for file in $@
do
  size=`find "$file" -printf "%k"` || continue
  dd if=/dev/urandom of="$file" bs=1k count=$size
  rm -- "$file"
done

Noch viel einfacher geht es aber mit dem Befehl wipe. Dieser verfügt analog zu rm über einen mit -i aktivierbaren interaktiven Modus, durch -f kann das Löschen erzwungen werden, und mit -r oder -R ist die rekursive Bearbeitung von Verzeichnissen möglich. Die man-Page beschreibt die zahlreichen weiteren Optionen.

$> wipe -iv del
wipe: destroy 'del'? y  RETURN
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1083 Hits
Wertung: 0 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

title_2012_02

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Knoppix: Bootvorgang mit Cheatcode beschleunigen
Knoppix: Bootvorgang mit Cheatcode beschleunigen
Marcel Hilzinger, 18.01.2012 21:05, 0 Kommentare

Die Bootsequenz der Live-Distribution sucht beim Start zunächst auf Festplatten, dann auf USB-Sticks und erst dann in den DVD-Laufwerken (/dev/sr* oder /dev/scd*) nac...

Aktuelle Fragen

OpenSuse 12.1-Service Kit 01/12
Christoph-J. Walter, 28.01.2012 08:52, 2 Antworten
Hallo Gemeinde, ich habe 12.1 neu installiert. Alles in Ordnung! Nun möchte ich das Service Kit (...
Ubuntu 11.10 konfigurieren
Michael Hinz, 27.01.2012 17:52, 0 Antworten
Ubuntu läuft bei mir. Allerdings nur, wenn die Daten-CD eingelegt ist. Unabhängig von Bios-Einste...
SUSE12
Jörg Müller, 25.01.2012 14:27, 5 Antworten
Hallo Gemeinde Ich habe schon ziemlich lange auf einem Rechner Linux laufen, bin also nicht ganz...
Hat jemand Erfahrung beim Einsatz einer Kinect / OpenNI?
GoaSkin , 24.01.2012 23:35, 0 Antworten
Hallo, ich habe mir eine Kinect zugelegt, um zu schauen, was man damit unter Linux so machen k...
Kollaboration - Zeichnen auf mehreren Geräten gleichzeitig
Ludwig jun. B., 19.01.2012 11:17, 4 Antworten
Schönen guten Tag, ich suche aktuell eine Software für Linux/Windows (eines von beiden), welch...