Dateien und Ordner auf der Kommandozeile verwalten

Dateien komprimieren

Zwar hat Dateikomprimierung heute nicht mehr denselben Stellenwert wie zu den Zeiten von 100-MByte-Festplatten, doch spielt sie für Backups oder den Versand von Dateien per E-Mail immer noch eine Rolle [2]. Die Bash-Shell von Linux bringt nicht weniger als vier Kommandos für die Datenkompression mit: tar, gzip, bzip2 und das nur selten eingesetzte cpio.

Gzip hat sich als Quasi-Standard für die Komprimierung etabliert, da es das Programm für alle gängigen Betriebssysteme gibt und sich die komprimierten Daten gut austauschen lassen. Im einfachsten Fall komprimieren Sie eine Datei mit dem simplen Aufruf gzip Datei und können dann das Ergebnis mithilfe des Kommandos gzip -l Datei.gz begutachten, das unter anderem den Komprimierungsgrad ausgibt.

Die komprimierte Datei verschwindet im Archiv und liegt anschließend nicht mehr auf der Platte. Um das zu vermeiden, lassen Sie Gzip mittels der Option -c das Archiv auf die Standardausgabe schreiben und leiten es von dort aus in eine Datei um:

$ gzip -c Datei > Datei.gz

Den Komprimierungsgrad und damit auch die Arbeitsgeschwindigkeit von Gzip beeinflussen Sie bei Bedarf beim Aufruf mit den Schaltern --best (höchste Komprimierung) oder --fast (schnellste Verarbeitung). Das Ganze lässt sich über die Optionen -1 (entspricht --fast) bis -9 (entspricht --best) auch feintunen, wobei Gzip voreingestellt -6 verwendet. Für die Arbeit mit Gzip-Archiven gibt es eine ganze Reihe Hilfswerkzeuge:

  • zcat zeigt die Dateien aus einem Gzip-Archiv an.
  • zcmp vergleicht die Dateien aus einem Gzip-Archiv byteweise mit angegebenen Files.
  • zdiff zeigt die Unterschiede zwischen Dateien aus einem Gzip-Archiv und den angegebenen Files an.
  • zgrep, zegrep und zfgrep suchen in Dateien eines Gzip-Archivs nach dem angegebenen Textmuster.

Mit dem Schalter -r taucht Gzip beim Komprimieren in eventuell vorhandene Unterverzeichnisse ab und verpackt auch deren Inhalt. Um ein Gzip-Archiv wieder auszupacken, verwenden Sie Gzip mit dem Schalter -d ("deflate") oder benutzen – noch einfacher – schlicht das Kommando gunzip Datei.gz.

Das Kommando bzip2 erstellt Archive, die um 10 bis 20 Prozent kompakter ausfallen als die mit Gzip erstellten. Die Optionen dieses Befehls gleichen weitgehend den von Gzip benutzten. Allerdings fehlt -r für das Abtauchen in Unterverzeichnisse, dafür erhält -k die Originale der komprimierten Dateien. Auch hier gibt es wieder einige unterstützende Werkzeuge:

  • bzipcat zeigt den Inhalt einer im Bzip2-Archiv enthaltenen Datei an.
  • bziprecover hilft beim Reparieren beschädigter Bzip2-Archivdateien.
  • bunzip2 dekomprimiert Bzip2-Archive.

Möchten Sie sich nicht unnötig mit den Optionen von Gzip oder Bzip2 herumschlagen und auf komfortable Weise ganze Verzeichnisbäume in Archive verpacken, dann greifen Sie einfach zu tar. Sein Name steht für seinen ursprünglichen Einsatzzweck, das Erstellen von "tape archives", als Dateien für das Backup auf Band.

Für das Verpacken benötigen Sie die Option -c ("create"). Hinter <-f> geben Sie den Namen des zu erstellenden Archivs an, mit -z (Gzip) beziehungsweise -j die gewünschte Kompressionsmethode. Als nützlich erweist sich zudem -v, das dafür sorgt, dass Tar die Namen der bearbeiteten Dateien ausgibt. Der folgende Befehl verpackt das Verzeichnis RasPiGeek samt aller Unterverzeichnisse in ein TAR.GZ-Archiv, einen sogenannten Tarball:

$ tar czvf RasPiGeek.tar.gz RasPiGeek/

Dabei bleiben alle Originaldateien erhalten. Genauso einfach funktioniert auch das Auspacken mittels der Option -x ("extract"), wobei Tar die im Archiv verwendete Kompressionsmethode selbst erkennt – Sie müssen -z beziehungsweise -j also nicht extra angeben:

$ tar xvf RasPiGeek.tar.gz

Auch wenn es sich meist unkompliziert verwenden lässt, kennt Tar doch eine Vielzahl von Optionen – zu viele, um sie hier alle zu nennen. So können Sie beispielsweise mit --exclude Datei Dateien ausschließen und mit -p Dateirechte konservieren. Beim Auspacken verhindert -k das Überschreiben bereits vorhandener Dateien. Um zwei Tar-Archive aneinanderzuhängen, tippen Sie:

$ tar --append Tarball1 Tarball2

Die Option -u frischt den Inhalt eines Archivs mit neueren Versionen der enthaltenen Dateien auf, mittels --diff vergleichen Sie zwei Tarballs.

Das vierte Kompressionskommando, cpio, ist über die Jahre etwas aus der Mode gekommen, nicht zuletzt deshalb, weil es in der Handhabung etwas Umstände macht. Um ein Archiv zu erzeugen, beschickt man es in der Regel via ls mit einem Eingabedatenstrom, den man es dann in eine Ausgabedatei schreiben lässt:

$ ls | cpio Optionen -o > Archiv.cpio

Hartgesottene Unix-Administratoren lieben Cpio, weil es ähnliche Fähigkeiten wie Tar bietet, aber noch mehr Optionen und Kompressionsformate kennt sowie vielfältige Möglichkeiten bietet, die in Archiven gelagerten Dateien einzusehen und sogar zu bearbeiten. Als normaler Anwender werden Sie aber kaum jemals in die Verlegenheit geraten, Hand an Cpio-Archive zu legen.

Globbing

Einer der Gründe für die Mächtigkeit von Shell-Befehlen liegt darin, dass sie sich auf mehrere Dateien gleichzeitig anwenden lassen. Bei vielen Kommandos können Sie eine durch Leerzeichen getrennte Liste von Dateien übergeben. Viel präziser und effizienter gelingt der Umgang mit mehreren Dateien allerdings über das sogenannte Globbing. Der vom englischen Wort für Klecks oder Klümpchen abgeleitete Begriff bezeichnet eine musterbasierte Suche ("pattern matching") auf der Basis von Platzhalterzeichen – den sogenannten Wildcards – oder Suchmustern, die man "reguläre Ausdrücke" nennt.

Das in der Bash-Shell am häufigsten verwendete Wildcard-Zeichen ist der Asterisk (*), der für eine beliebige Anzahl beliebiger Zeichen steht. Er kommt meist zum Einsatz, um Dateien mit derselben Dateinamenserweiterung zu finden. So gibt der Befehl ls *.png alle PNG-Grafiken im aktuellen Verzeichnis aus. Das Fragezeichen dagegen steht als Platzhalter für genau ein beliebiges Zeichen. Tippen Sie beispielsweise ls bild?.png, erhalten Sie als Treffer Dateien wie bild1.png oder bild2.png, nicht aber bild10.png – Letzteres enthält ja nach bild noch zwei weitere Zeichen, nicht nur eins.

Mit Suchmustern lässt sich das Globbing wesentlich präziser gestalten. Um eine Gruppe bestimmter Zeichen anzugeben, setzen Sie diese in eckige Klammern. So trifft der Ausdruck bild[12].png auf die Dateien bild1.png und bild2.png zu, nicht aber auf bild3.png oder bild12.png. Durch ein vorangestelltes ^ negieren Sie den Ausdruck und erhalten als Treffer alle Dateien, auf die das Suchmuster nicht zutrifft (Abbildung 6).

Abbildung 6: Mithilfe von Suchmustern wenden Sie Kommandozeilenbefehle auf mehrere Dateien an.

Solche Suchmuster decken allerdings nur einen kleinen Ausschnitt der Möglichkeiten ab, die klassische reguläre Ausdrücke, sogenannte Regexe, bieten. Hier können Sie ganze Zeichenklassen und Zeichenbereiche verwenden, die Suche auf Zeilen- oder Wortanfänge beschränken, und vieles andere mehr [3]. Dabei handelt es sich zwar um eine Kunst, die etwas Übung erfordert, doch der Aufwand lohnt sich.

Generell sollten Sie aber bei der Benutzung von Globbing stets Vorsicht walten lassen. Bevor Sie Kommandos wie mv oder gar rm per Mustersuche auf zahlreiche Dateien loslassen, sollten Sie zur Sicherheit vorab anhand eines ungefährlichen Befehls wie ls überprüfen, welche Dateien das Suchmuster erfasst. Anderenfalls könnte eine unangenehme Überraschung ins Haus stehen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

08/2019
Smarte Hacks

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Immer der Reihe nach

    Mit einer einfachen Schaltung testen Sie Bausteine, die über den SPI-Bus miteinander kommunizieren.

  • Einzigartig

    Eine MAC-Adresse ermöglicht die Kommunikation im Netzwerk. Der 24AA02E48 liefert sie für Setups, die aus grundlegenden Komponenten bestehen.

  • Steinkuchen

    Der Raspberry Pi hat viele Fans, doch nicht ohne Grund sehnen sich viele Anwender nach einem RasPi 4. Der Rock Pi 4 übertrumpft den RasPi 3 in Sachen Leistung um Längen und schlägt sich auch in der Praxis gut.

  • Kerngeschäft

    Der Einstieg in die Welt der Mikrocontroller fällt nicht ganz leicht. Mit dem Nucleo F401RE haben Sie jedoch ein Entwicklerboard samt abgestimmter Entwicklungsumgebung an der Hand.

  • Himbeer-Geräte

    Mit Maus und Tastatur im weiß-roten Raspberry-Look macht die Raspberry Pi Foundation das eigene Angebot an Peripheriegeräten für den Mini-Rechner komplett.

  • Unter Kontrolle

    PiCockpit ist eine speziell auf den RasPi zugeschnittene Online-Monitoring-Lösung. Wir werfen einen ersten Blick auf den brandneuen und in Ausbau befindlichen kostenlosen Dienst.

  • Ins rechte Licht gesetzt

    Selbst ohne eigenen Garten holen Sie sich Pflanzen mithilfe von LEDs in jeden Raum und sehen ihnen mit dem RasPi beim Wachsen zu.

  • Helligkeit nach Maß

    Wer bei wechselnden Lichtverhältnissen nicht ständig die Beleuchtung manuell nachregeln möchte, der spannt dafür einen PiXtend ein.

  • Geschrumpft

    Kleine Bildschirme gibt es zwar viele, aber der Support von Raspbian ist überraschend schlecht. Mit ein paar Tricks erzielen Sie trotzdem ein optimales Ergebnis.

  • Brüllwürfel

    Kompakt-Stereoanlagen mit CD-Spieler und Kassettendeck sind inzwischen oft ein Fall für den Recyclinghof – oder für die digitale Wiederbelebung mit einem RasPi und etwas Geschick.