Shell-Skripte – Kleine Helfer selbst gemacht
Auslagerung in ein Skript
Mittlerweile ist schon eine ganz schön lange Befehlszeile zusammengekommen. Würde man sie immer wieder abtippen, um das Ziel einer Kurz-URL zu betrachten, hat man gut zu tun. Zur Vereinfachung wandert der komplette Befehl in ein Skript, das man mit einem Editor erstellen kann.
Auf den meisten Systemen ist heute der (Vi
IMproved Vim) installiert, eine Weiterentwicklung des Vi. Der Befehl vi funktioniert trotzdem, da er mit Vim verknüpft ist, was einem ein ls -l /usr/bin/vi zeigt. Wenn Vim vollständig installiert ist, sollte man unbedingt einmal den Befehl vimtutor in der Shell ausführen. Vimtutor hilft dabei, den Editor soweit zu beherrschen, dass man ihn als Allzweck-Editor nutzen kann.
Da nicht jeder Vim mögen muss, kann man auch einen anderen Editor verwenden, z.B. nano im Terminal. Sowohl zu Vim als auch nano gibt es Artikel in freiesMagazin 08/2008. Wer einen grafischen Editor bevorzugt, kann Gedit, KWrite, Geany oder einen der hundert anderen benutzen.
Wenn man einen grafischen Editor aus dem Terminal heraus starten will, sollte man noch ein & ans Ende der Befehlszeile setzen, damit sie nicht blockiert wird. Wobei man GUI-Programme eher vom Desktop aus aufrufen sollte.
Ist der Editor der eigenen Wahl gestartet, tippt man folgende Zeilen ein bzw. kopiert sie in das Textfenster:
#! /bin/sh
wget --max-redirect=0 --server-response -qO- "$@" 2>&1 | grep Location | awk '{print $2}'
exit 0
Anschließend speichert man das Skript und wechselt wieder in die Kommandozeile, in der man das Skript noch ausführbar macht:
$ chmod +x linkextender.sh
Das Skript beginnt in der ersten Zeile mit der Zeichenkombination #!, dem
Shebang, auch Magic Line genannt (siehe Shebang - All der Kram, freiesMagazin 11/2009). Sie weist das Betriebssystem an, die Datei mit der Standard-Shell auszuführen. Die Zeile funktioniert übrigens mit und ohne Leerzeichen nach dem Ausrufezeichen.
Möchte man sich nicht darauf verlassen, welches die Standard-Shell auf einem System ist, kann man auch die Shell direkt eintragen. Das ist zum Beispiel sinnvoll, wenn das Skript besondere Befehle verwendet, die nicht jede Shell kennt. Dann gibt man zum Beispiel #! /bin/bash ein, wenn man die Bash verwenden will.
In der Zeile mit Wget steht nun anstelle der Kurz-URL die Zeichenfolge $@. Sie sorgt dafür, dass alle Parameter dem Skript als Argumente übergeben werden, wobei die Anführungszeichen sicherstellen sollen, dass jeder Parameter für sich ein separater String bleibt. Mit exit 0 liefert das Skript den Exitstatus 0 zurück und beendet sich normal.
Das Skript ruft man nun zusammen mit einem Argument in der Kommandozeile auf:
$ ./linkextender.sh 0cn.de/y6ck
Alternativ kann man es auch mit einer vorangestellten Shell aufrufen:
$ sh linkextender.sh 0cn.de/y6ck
Fazit
Auf jedem Linux- oder Unix-basiertem Betriebssystem gibt es eine Menge Shell-Skripte, die wichtige Aufgaben übernehmen. Einige sind ähnlich simpel wie das Skript weiter oben, andere sind wesentlich komplexer.
Wenn man diese Skripte versteht, ist man nicht mehr hilflos der Technik ausgeliefert, sondern kann selber Lösungen entwickeln. Dabei kann man vorhandene Skripte auf seinem System anpassen oder, wenn die das Problem nicht beheben, ein eigenes Skript schreiben. Dieses Wissen kann eine große Hilfe sein, um Probleme zu lösen.
Autoreninformation
Christian Imhorst (Webseite) betreut beruflich Windows-Systeme, weshalb seine täglichen Kommandozeilen eher cmd.exe sowie die PowerShell sind. Nach Feierabend ist er dann aber sein privater Linux-Admin und die Konsole ist dann auch immer mit dabei.
Dieser Artikel ist in freiesMagazin 02/2014 (ISSN 1867-7991) erschienen. Veröffentlichung mit freundlicher Genehmigung.

