Globenaut

Jeder hat das Recht auf Meinungsfreiheit und freie Meinungsäußerung; dieses Recht schließt die Freiheit ein, Meinungen ungehindert anzuhängen sowie über Medien jeder Art und ohne Rücksicht auf Grenzen Informationen und Gedankengut zu suchen, zu empfangen und zu verbreiten.
Die Allgemeine Erklärung der Menschenrechte
Resolution 217 A (III) vom 10.12.1948/Artikel 19
Zensoren sind Verbrecher!
BPjM: Trusted Censorship
Christliche Werte — Neine Danke!

Skripttipp #1: Bashskripte in die Menüzeile des Finders einbinden

von Globenaut am 25.3.08

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:

  1. Sofern noch nicht geschehen, Script-Menü aktivieren:
    1. AppleScript-Dienstprogramm öffnen
    2. »Skriptmenü in der Menüleiste anzeigen« ankreuzen
  2. AppleSkript ablegen in »~/Library/Scripts/«

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:

  1. Automator öffnen
  2. »Bibliothek einblenden« wählen
  3. Doppelklick auf »Shell-Skript« ausführen
  4. Skriptname eingeben
  5. »Sichern« aufrufen und dort Dateiformat »Programm« wählen und ebenfalls in »~/Library/Scripts/« an geeigneter Stelle ablegen.

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

  1. Technical Note TN2065 do shell script in AppleScript
    http://developer.apple.com/technotes/tn2002/tn2065.html

Labels: , , , , , ,

#  0 Kommentare

Piratenblogger
Glauben ist die mutwillige Nichtbenutzung des Verstandes!
Bundestagswahl 2009: Weg mit dem Gesindel von SPD und C*U!
© 2005-2009, GlobenautDieses Blog wird unterstützt von Blogger.