Gleich vorneweg, dieser Tipp ist nur für Benutzer von MacOS X sinnvoll, da er erklärt wie man Shellskripte in die Menüs der grafischen Benutzeroberfläche („Finder“) einbinden kann.
Apple bietet zwar seit Jahren die hauseigene Skriptsprache AppleSkript an, aber deren Beliebtheit hält sich irgendwie in Grenzen. Für viele Dinge ist sie einfach zu unhandlich. Seit Erscheinen von MacOS X steht dem Anwender auch die Welt der Bash mit ihren unzähligen Skripten offen. Oftmals ist es einfacher, ein fertiges Bashskript anzupassen, als das gleiche Problem (noch einmal) mit AppleSkript zu lösen. Doch nicht jeder möchte oder kann im Terminal arbeiten. In solchen Fällen kann man mit Hilfe eines kleinen AppleSkriptes jedes beliebige Bashskript über die Menüzeile aufrufen, denn AppleSkript kennt folgenden praktischen Befehl: do shell script "Skriptname einfügen".[1] Das einfachste AppleSkript sieht damit wie folgt aus:
tell application "Finder" activate do shell script "Skriptname einfügen" end tell
Erfodert das Bashskript Parameter in Anführungszeichen, müssen diese in einfache Anführungseichen gesetzt werden oder durch \" maskiert werden:
tell application "Finder" activate do shell script "Skriptname einfügen 'Parameter einfügen'" end tell
Der Befehl eignet sich natürlich auch, um in AppleSkpriten Ergebnisse aus der Bash zu verwenden:
tell application "Finder" activate ... set Woche to (do shell script "date '+%V'") set Tag to (do shell script "date '+%u'") ... end tell
Jetzt muß das AppleSkript noch in der Menüzeile erscheinen:
Wurde alles richtig gemacht, erscheint jetzt im ScriptMenü in der Menüzeile ein Eintrag mit dem Namen des AppleSkriptes. Durch Anlegen von Unterordnern behält man im Scripts-Ordner die Übersicht (Unterordner werden automatisch als Untermenüs dargestellt). Besondere Bedeutung kommt hierbei dem Unterordner »Applications« zu. Legt man in diesem Ordner weitere Unterordner mit einem Programmnamen an, erscheinen die darin abgelegten Skripte nur dann, wenn das Programm läuft und sich vorne befindet.
Es gibt noch einen zweiten Weg um schnell BashSkriptaufrufe mit dem Finder zu verbinden:
Man könnte auch direkt ein Alias auf das Skript oder das Skript selber unter »~/Library/Scripts/« ablegen. Diese Variante hat aber den Nachteil, daß dem Aufruf keine Parameter für das Skript übergeben werden können. Daher ist es flexibler, die Möglichkeit mit dem AppleSkript zu benutzen.
Zum Abschluss ein kleines praktisches Anwendungsbeispiel der Verbidnung zwischen Bash, AppleSkript und grafischer Benutzoberfläche. Das Skript »Hole Wochenlog« holt mit dem Programm Interarchy von einem ftp-Server mittels sftp das jeweils aktuelle Wochenlog (z. B. access.log.08.gz) ab und legt es im richtigen Ordner ab:
tell application "Interarchy" activate show wTransfers set Jahr to year of (current date) set Woche to (do shell script "date '+%V'") set Tag to (do shell script "date '+%u'") if Woche < 10 then set Woche to "0" & Woche end if set Logdatei to "access.log." & Woche & "." & Tag set Ablageort to "Festplatte:Users:Anmibe:Homepage:Logs:access.logs "¬ & Jahr & ":" & Logdatei fetch file Ablageort host "ftp.Domnain.xy" path "logs/" & Logdatei ¬ user "xyz" protocol SFTPProtocol end tell
Labels: AppleSkript, Bash, Finder, IT, MacOS X, Skripttipp, Terminal
Kommentare: