Home / LinuxUser / 2000 / 06 / Shell-Tipps

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Apache Open Office
(80 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

1286 Hits
Wertung: 0 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

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

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 7 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 1 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 0 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...
OpenLDAP Replikation
Ludwig jun. B., 25.04.2012 14:04, 2 Antworten
Hallo, bis jetzt habe ich nur gering Erfahrung mit OpenLDAP. Doch ich muss mich da jetzt einar...