FileMaker Workshop Mac Command Line Tools

Verglichen mit der FileMaker Entwicklung erscheint die Benutzung des Mac Terminals (Command Line Interface) vielen als mühsam. Wer seinen inneren Schweinehund überwinden kann, der wird mit einer Vielfalt an Features belohnt, die aus der Unix-Welt stammen:

  • Ordner und Dateien anlegen, umbenennen, löschen, kopieren,
    verschieben, komprimieren (zip), Rechte setzen, …
  • Textfiles bearbeiten (sed)
  • Programme starten (open)
  • Bilder bearbeiten (sips)
  • Dateitransfer (ftp, scp)
  • Webseiten auslesen und Webformulare hacken (wget, curl)
  • u.v.a.m.

Hinweis für Windows User: Dieser Artikel bezieht sich auf Mac OS. Ähnliche Funktionen bietet unter Windows die PowerShell.

Beispiel 1: Ordner anlegen

Versuchen wir uns mit dem Anlegen eines Ordners. Zunächst direkt aus dem (Programme > Dienstprogramme >) Terminal:

$ mkdir ~/Desktop/Ordner

Soll der Ordnername Leerzeichen enhalten müssen diese mit Backslash maskiert werden oder der gesamte Pfad kommt in Quotes. Nur das Homeverzeichnis Kürzel ~
darf nicht innerhalb der Quotes stehen.

$ mkdir ~/Desktop/"mein Ordner"

Bildschirmfoto 2013-01-20 um 09.42.16

Das läßt sich aus FileMaker so noch nicht ausführen, aber aus dem (Programme > Dienstprogramme >) AppleScript-Editor:

do shell script "mkdir ~/Desktop/\"mein Ordner 2\""

Bildschirmfoto 2013-01-20 um 09.44.53

Voila! Und das geht auch aus FileMaker mit Skript:

Variable setzen[$code; "mkdir ~/Desktop/\"mein Ordner 3\""
AppleScript ausführen["do shell script " & Zitat($code)]

Wenn der Name des anzulegenden Ordners in dem Feld Ordnername steht:

Variable setzen[$code; "mkdir ~/Desktop/" & Zitat(Tabelle::Ordnername)
AppleScript ausführen["do shell script " & Zitat($code)]

Das Aufteilen in zwei Zeilen und Verwenden der Zitat-Funktion erspart doppelte Maskierungen (\\\").

Beispiel 2: Ordner zippen

Der Terminal Befehl zum Komprimieren eines Desktop-Ordners samt Inhalt ist (auf meinem System):

$ cd "/Users/jens/Desktop"; zip -r "archiv.zip" "ordner"

Der Befehl cd (change directory) wechselt in das gewünschte Verzeichnis, das Semikolon trennt die zwei Befehle. Komprimiert wird der gesamte Ordner ordner, das Ergebnis ist die Datei archiv.zip.

Mit drei FileMaker Feldern cd_ordner, archiv, ordner wäre das FileMaker Skript:

Variable setzen[$code; "cd " & Zitat(Tab::cd_ordner) & "; zip -r " & Zitat(Tab::archiv) & " " & Zitat(Tab::ordner)
AppleScript ausführen["do shell script " & Zitat($code)]

man pages

Dokumentation zu mkdir und seinen Geschwistern gibt es im Terminal mit man mkdir u.a. Beenden mit Taste ‘q’.

term_man

Terminal Ausgabe in FileMaker verwenden

Viele Terminalbefehle erzeugen Output, den wir in FileMaker verwerten können. Die Übergabe macht AppleScript ausführen:

"do shell script " & Zitat($code) & "¶" &
"tell application \"FileMaker Pro Advanced\"¶" &
"	set cellValue of cell \"fm_result\" of current record to result as string¶" &
"end tell"

Falls sie keinen FileMaker Advanced verwenden, heißt ihre Application “FileMaker Pro”. Das Ergebnis des Terminal Befehls in $code wird in das FileMaker Feld fm_result geschrieben.

Experimentieren sie mit ‘ls -a’ um den Inhalt eines Ordners in ausführlicher Variante zu sehen.

Leave a Reply

Your email address will not be published. Required fields are marked *