Terminal von einem Automator-Workflow aus starten?


6

Ich verwende ziemlich oft den Befehl python -m SimpleHTTPServer im Terminal, um einen Webserver zum Testen von Apps zu starten . Nachdem ich gerade die Grundlagen des Automators kennengelernt hatte, dachte ich, dass dies eine großartige Verwendung für ihn sein würde. Nachdem ich Folgendes als Dienst hinzugefügt habe, kann ich jetzt mit der rechten Maustaste auf einen Ordner klicken und einen Webserver starten, der auf diesen Ordner zeigt.

cd $1
python -m SimpleHTTPServer 8000

Das einzige Problem, das ich habe, ist das Fehlen der Ausgabe aus dem Workflow. Wenn ich es manuell mache, wird in einem Terminalfenster angezeigt, welche Anforderungen eingehen, und ich kann Strg + C drücken, um den Webserver zu beenden.

Der Automator-Workflow ist still und ich muss Activity Monitor öffnen und Python beenden, um ihn zu schließen. Gibt es eine Möglichkeit, das Skript in einem Terminalfenster ausführen zu lassen?

Antworten:


6

Ich habe anhand des folgenden Artikels herausgefunden, wie ich es selbst mache.

http://hints.macworld.com/article.php?story=20050827164648766

Es wurde eine Zeile hinzugefügt, um den Python-Befehl auszuführen:

on run {input, parameters}
  tell application "Terminal"
    activate
    if (the (count of the window) = 0) or ¬
     (the busy of window 1  = true) then
      tell application "System Events"
        keystroke "n" using command down
      end tell
    end if
    do script "cd \"" & (POSIX path of ¬
     (input as string)) & "\"" in window 1
    do script "python -m SimpleHTTPServer 8000" in window 1
  end tell
  return input
end run

Ersetzen Sie den Block "tell application" System Events "durch" do script ". Ein Befehl "Skript ausführen" ohne Parameter öffnet ein neues Terminalfenster. Das Simulieren von Tastenanschlägen ist ein unzuverlässiges Mittel, um eine Anwendung zu skripten. Tun Sie es nur als letzten Ausweg, wenn es keine Möglichkeit gibt, es direkt anzuweisen, das zu tun, was Sie wollen.
Chris Seite

Dieser "do script" -Befehl funktioniert nicht bei allen gültigen Pfadnamen. Entfernen Sie die Anführungszeichen aus der Shell-Befehlszeichenfolge (\ ") und verwenden Sie quoted form of (POSIX path of (input as string))stattdessen. Es ist bekannt quoted form of, wie alle Zeichen, die für Shell-Befehle in Anführungszeichen gesetzt werden müssen, korrekt in Anführungszeichen gesetzt werden.
Chris Page

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.