Programmierung

bash für Einsteiger – Teil 2 Inhalte speichern und ausgeben, Befehle verbinden

  • 28/09/2012

Wenn man einem Kind zum ersten Mal einen Hammer in die Hand gibt, wird es diesen relativ schnell zum unkontrollierten Schlagen einsetzen und irgendwann die Lust verlieren. Hat es aber schon einmal einen Erwachsenen bei der Benutzung eines Hammers beobachtet, so wird es den Erwachsenen nachahmen. Gezielte Hilfestellung bei der Benutzung des Handwerkzeugs macht es neugierig und bringt es schneller zum Erfolg.

Uns ist es wichtig, Sie nicht mit dem Versuch,  effektiv mit der bash zu arbeiten, alleine zu lassen. Wir möchten Ihnen das Grundlagenwissen vermitteln, so dass Sie sich selbst eine Meinung zur bash bilden können. Anknüpfend, an den ersten Teil, wollen wir Ihnen im folgenden Artikel erklären, wie man Inhalte einliest und ausgibt und Befehle sinnvoll miteinander verbindet.

Inhalt speichern

Beginnen wir den Artikel mit dem wichtigsten Befehl: dem Speichern eines Inhalts. Damit wir überhaupt Inhalt speichern können, erzeugen wir drei Zeilen mit dem Befehl echo:

$ echo "Name Jena, Fläche 114, Einwohner 105.463, Vorwahl 03641
Name Berlin, Fläche 891, Einwohner 3.515.473, Vorwahl 030
Name Köln, Fläche 405, Einwohner 1.017.155, Vorwahl 022"

Die erzeugten Zeilen speichern wir im nächsten Schritt mit dem Zeichen > in eine Datei. Der Dateiname, der zu erstellenden Datei, wird beim Speichern-Befehl ans Ende gehängt:

$ echo "Name Jena, Fläche 114, Einwohner 105.463, Vorwahl 03641
Name Berlin, Fläche 891, Einwohner 3.515.473, Vorwahl 030
Name Köln, Fläche 405, Einwohner 1.017.155, Vorwahl 022" > staedte.txt

Das Zeichen „>“ sorgt dafür, dass eine Datei angelegt wird, sofern sie nicht schon existiert. Möchten Sie zusätzlich eine neue Zeile in die Datei staedte.txt einfügen, so verwenden Sie statt des einfachen „größer als“ ein doppeltes „größer als“ Zeichen:

$ echo "Name Hamburg, Fläche 755, Einwohner 1.804.073, Vorwahl 040" >> staedte.txt

Inhalt ausgeben

Nun, da Sie Inhalte speichern können, wollen Sie diese sicher auch wieder ausgeben lassen. Erzeugen Sie eine einfache Ausgabe der gewünschten Datei mit dem Befehl cat.

$ cat staedte.txt

Name Jena, Fläche 114, Einwohner 105.463, Vorwahl 03641
Name Berlin, Fläche 891, Einwohner 3.515.473, Vorwahl 030
Name Köln, Fläche 405, Einwohner 1.017.155, Vorwahl 022
Name Hamburg, Fläche 755, Einwohner 1.804.073, Vorwahl 040

die Pipe / Befehle verbinden

Wenn wir die Liste betrachten, stellen wir fest, dass die Städte unsortiert eingetragen wurden. Sollten wir zudem Hamburg zweifach in die Datei gespeichert haben, müssen wir den doppelten Eintrag entfernen. Gingen wir den herkömmlichen Weg, würden wir die Datei mit einem Texteditor öffnen, manuell sortieren und doppelte Einträge „händisch“ entfernen.

Die Bash erspart uns diese lästigen Vorgänge und stellt uns die Befehle sort (Sortieren) und uniq (doppelte Einträge entfernen) zur Verfügung. Verwendung finden die Befehle, indem man sie mittels der Pipe „|“ an den vorherigen Befehl anhängt.

$ cat staedte.txt | sort | uniq 

Name Berlin, Fläche 891, Einwohner 3.515.473, Vorwahl 030
Name Hamburg, Fläche 755, Einwohner 1.804.073, Vorwahl 040
Name Jena, Fläche 114, Einwohner 105.463, Vorwahl 03641
Name Köln, Fläche 405, Einwohner 1.017.155, Vorwahl 022

Sie können durch die Pipe beliebig viele Befehle miteinander verschachteln. Die Pipe ist der Mörtel zwischen zwei Steinen und muss als mächtiges Bindeglied verstanden werden.

Bitte achten Sie bei der Verwendung auf Sinnhaftigkeit. Das Entfernen doppelter Einträge mit uniq kann nur in Verbindung einer vorherigen Sortierung durch sort erfolgen.

Weitere Befehle

In diesem Blog können wir nicht alle Befehle beschreiben, die Sie in der Bash benutzen können. Diese Aufgabe haben glücklicherweise andere Webseiten vor uns erledigt. Wir möchten Ihnen daher einfach nur einige Links als weiterführende Lektüre zur Verfügung stellen:

Wenn Sie als Neuling zum ersten Mal die Befehlslisten betrachten, so schrecken Sie bitte nicht zurück. Die Zeitersparnis, die Sie durch deren Benutzung erhalten wird enorm sein.

Fragen Sie sich bei wiederkehrenden Aufgaben, ob nicht ein Befehl oder ein Bash-Script Ihre Arbeit erleichtern kann, nehmen Sie sich die Zeit zur Einarbeitung! Ob Sie ein Laufwerk per ssh mounten (durch mount_smbfs), eine Synchronisation von lokalen Dateien zum Server durchführen (per rsync) oder in regelemäßigen Abständen Verzeichnisse sichern (über zip), die bash wird Ihnen weiterhelfen und den notwendigen Befehl zur Verfügung stellen.

Im nächsten und abschließenden Artikel möchten wir Ihnen die Scripterstellung näher bringen. Dazu werden wir auf Funktionen eingehen und Ihnen zeigen, wie Sie Ihre eigenen bash Befehl erstellen können.