Shell Programmierung

Unter Linux werden Befehle klassischerweise über eine Shell gestartet. Die Syntax der Shell erlaubt es einfache Befehle so miteinander zu kombinieren, dass sich damit auch komplexe Aufgaben lösen lassen. Tatsächlich bieten die Shells nahezu alle Elemente, die aus anderen Programmiersprachen bekannt sind. Allerdings birgt die Programmierung mit einer Shell etliche Tücken, so dass sorgsam evaluiert werden sollte, ob sie die richtige Sprache für den geplanten Einsatz ist.

Wir gehen in diesem Kurs auf alle wichtigen Funktionen der Shell und deren Syntax ein. Die Teilnehmer lernen sowohl vorhandene, gerne nach Rücksprache auch von den Teilnehmern mitgebrachte Skripte zu verstehen und zu warten als auch eigene, stabile Programme zu erstellen, um so Aufgaben zu automatisieren.

In diesem Kurs werden wir mit der unter Linux am weitest verbreitetsten Shell, der bash, arbeiten. Diese ist auch unter den meisten anderen Unixen (und sogar unter Windows 10) verfügbar, und fast alle Sprachelemente, die wir kennenlernen werden, sind auch in anderen modernen Shells verfügbar. Sollte eine andere Shell für Ihre Arbeit relevant sein, kontaktieren Sie uns bitte sicherheitshalber vor Kursbeginn.

Trainer und Dozenten

Martin Schulte entwickelt seit über 30 Jahren unter Unix, wenn angemessen, selbstverständlich mit Shells.

Er ist Hauptautor des Buchs "bash - Einstieg in die Shell-Programmierung".

Für das Linuxhotel hält er auch die Linux Grundlagen-Schulung.

Voraussetzungen

Sie sollten Linux über die Kommandozeile bedienen können und darin auch etwas Übung haben. Oder anders gesagt: die Inhalte unserer Schulung Linux Grundlagen sollten Ihnen größtenteils vertraut sein.

Die Teilnehmer müssen einen unter Debian Linux verfügbaren Text-Editor, der günstigerweise Syntax-Highlighting für die bash unterstützt, einigermaßen sicher beherrschen.

Inhalt

Am ersten Tag behandeln und vertiefen wir die klassischen Konzepte des interaktiven Arbeitens mit einer Unix-Shell. Mit diesen lassen sich schon etliche Routine-Aufgaben erledigen:

  • Shell-Programmierung: Einordnung, Anwendungsfälle und Grenzen
  • Kommando, Argumente, Optionen
  • IO-Redirection und einfache Programme aus der Unix-Toolbox
  • Wildcards
  • Quoting
  • (e)grep und (erweiterte) reguläre Ausdrücke
  • Variable
  • Exit-Status
  • Command substitution
  • find

Am zweiten Tag steigen wir in die (klassische) Programmierung ein:

  • Eigene Scripte erstellen
  • Hinweis: Programme so schreiben, dass sie in "das Konzept" passen
  • if
  • test, [
  • klassische Arithmetik (expr und ggf. bc)
  • while
  • for
  • case
  • Startvorgang der Shell konfigurieren
  • getopts

Am Vormittag des dritten Tages vertiefen das bisher Gelernte mit praktischen Beispielen. Am Nachmittag gehen wir dann zu modernen Konstrukten über.

  • Gruppierung von Kommandos
  • Funktionen
  • Manipulation von Variableninhalten
  • Tests mit [[ ]]
  • Arithmetik mit (( )) und $(( ))
  • Shell-Startup
  • Process substitution

Am Vormittag lernen wir Arrays kennen, am Nachmittag sehen wir uns realistische Scripten – gerne solche, die die Teilnehmer mitbringen.

  • Aufgaben mit Besprechung
  • assoziative Arrays
  • awk

Am letzten Tag vertiefen wir noch einmal das bisher Gelernte, befassen uns mit dem Thema Coding-Style und ein paar kleineren Themen.

  • Coding style
  • Here-Dokumente (<<) und Here-String (<<<)
  • Hintergrund-Prozesse und Signal-Handling
  • lokale Variable, scope
  • nameref-Variable
  • sed
  • Debugging mit xtrace

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An den Kurstagen dann von 9-18 Uhr (mit 2 Kaffee- und 1 Mittagspause) etwa 60% Schulungen und 40% Übungen. Selbstverständlich arbeitet jeder Teilnehmer am von uns gestellten Notebook oft parallel zum Referenten mit.

Anschließend Abendessen und Angebote für Fachsimpeln, Ausflüge uvm. Wir schaffen eine Atmosphäre, in der Fachleute sich ungezwungen austauschen. Wer das nicht will, wird zu nichts gezwungen und findet auch jederzeit Ruhe.