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 verbirgt sich dahinter eine vollständige Programmiersprache.

Wir gehen in diesem Kurs auf alle wichtigen Funktionen der Shell und deren Syntax ein. Die Teilnehmer lernen sowohl vorhandene 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 vorher.

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 Arbeitens mit einer Unix-Shell. Mit diesen lassen sich schon etliche Routine-Aufgaben erledigen:

  • Kommando, Argumente, Optionen
  • IO-Redirection und einfache Programme aus der Unix-Toolbox
  • Quoting und Wildcards
  • (e)grep und (erweiterte) reguläre Ausdrücke
  • Command substitution, Variable

Am zweiten Tag steigen wir in die Programmierung ein, bevor wir am Ende noch ein wichtiges Tool behandeln:

  • Eigene Scripte erstellen
  • Vergleiche, if
  • while, for
  • find, xargs

Am Vormittag des dritten Tages lernen wir zunächst das Programmierelement case kennen und beschäftigen uns mit dem eingebauten Kommando getopts, bevor wir am Nachmittag bestehende Scripte analysieren.

Am vierten Tag beschäftigen wir uns mit Konstrukten, die teilweise erst mit moderneren Shells zur Verfügung stehen:

  • Manipulation von Variableninhalten
  • Arithmetik, C-like for
  • (assoziative) Arrays
  • Gruppierung von Kommandos und Funktionen

Am fünften und letzten Tag besprechend wir einige wichtige Konzepte, die bisher keinen Platz gefunden haben:

  • Hintergrund-Prozesse und Signal-Handling
  • Einführung in awk und sed
  • Process substitution
  • Debug-Techniken