Gastbeitrag: Unix und Bash für Softwareentwickler

Der Unix-Werkzeugkasten ist ein mächtiges Instrument für Entwickler...

Die Einsatzzwecke sind genauso vielseitig wie die Tools, die in dem Werkzeugkasten enthalten sind:

  •  Automatisierung wiederkehrender Prozesse
  • Textorientierte Arbeiten wie Filtern, Formatieren, Extrahieren, Transformieren von Daten
  • Wrappen von (Java-)Programmen in Shell-Skripte zum Start


Shell-Skripte sind eine hervorragende Entwicklungs-/Laufzeitumgebung für niedrigschwellige Programmierprojekte. Sie eignen sich sowohl zum schnellen Prototyping als auch zur Anwendungsentwicklung. Wenn es sich für ein Projekt nicht lohnt, die Java IDE zu starten, ist häufig ein Shell-Skript das ideale Mittel der Wahl.

Oft ergeben sich komplexere Skripte aus einfachen, auf der Kommandozeile verketteten Befehlen: Der Wechsel vom "ein paar Befehle aufschreiben"-Modus zum "ein Programm schreiben"-Modus ist fließend – ohne, dass man dafür eine Programmiersprache bemühen muss.

Die im Unix-Werkzeugkasten umgesetzten Programmierkonzepte sind wohlstrukturiert und konsistent implementiert: Jedes Tool ist hochspezialisiert für genau einen Zweck; die Shell bietet die Verbindungselemente, um die einfachen und kleinen Werkzeuge zu orchestrieren.

Leider ist er auch eins der am meisten verkannten Werkzeuge. Auf den ersten (und vielleicht auch zweiten) Blick hat die Shell keinen besonders hohen Aufforderungscharakter. Intuitive Erschließbarkeit ist im Gegensatz zu GUI Tools kaum gegeben. Häufig sind erste schlechte Erfahrungen mit schwierig erschließbaren Programmen wie dem vi prägend für die weitere Ablehnung.

Die Shell und ihre Werkzeuge werden als notwendiges Übel betrachtet, die man aber mit grafischen Werkzeugen und Kniffen umgehen kann. Viele kennen auch genau einen Aufruf eines Programms, der – von Entwickler zu Entwickler tradiert – aber nie hinterfragt wurde.

Die Philosophie, Eleganz und Effektivität des Unix-Werkzeugkastens bleiben unerkannt und ungenutzt.

Doch schon mit ein paar Tastenkombinationen kann die Arbeit in der Kommandozeile der Shell deutlich effizienter gestaltet werden:

  •  Tab: Vervollständigen von Dateinamen, Variablen
  • Ctrl-A / Ctrl-E: Springen zum Anfang / Ende der Zeile
  • Ctrl-U / Ctrl-K: Löschen zum Anfang / Ende der Zeile
  • Ctrl-Y: Einfügen
  • Ctrl-_: Undo
  • Cursor Up / Down: Letzte Befehle durchsuchen
  • Meta-.: Letztes Argument der letzten Kommandozeile einsetzen (Meta: Entweder Alt-Taste oder ESC, je nach Terminal)
  • Ctrl-R: Reverse incremental search
  • !!: Letzter Befehl
  • history: Anzeige der Befehlshistorie
  • !<n>: Befehl Nr. <n> aus der Historie wiederholen

 
Das unter https://alexander_krumeich@bitbucket.org/alexander_krumeich/unixfreitagbeicologneintelligence.git verfügbare Skript ist ein kurzes, einfaches Beispiel, wie durch die Kombination von Befehlen immer wiederkehrende Aufgaben automatisiert werden können.

Bei n-design haben wir eine interne Schulungsreihe organisiert, in deren Rahmen wir uns monatlich mit einem Schwerpunktthema auseinandersetzen und gemeinsam die Grundlagen der Unix-Basistechnologien erarbeiten.