Ich versuche, eine komprimierte AppleScript .app auszuführen.
unzip -p file.app.zip | open -
oder
open < $(unzip -p file.app.zip)
Ist das möglich?
Da Sie es mit einer zip-komprimierten Anwendung .app
zu tun haben , bei der es sich um ein Anwendungspaket mit vielen Dateien handelt, müssen Sie die Anwendung meiner Meinung nach zuerst auf die Festplatte extrahieren, um sie zu öffnen, da der open
Befehl zum Öffnen einer Anwendung die Form von hat open -a ...
und nimmt keine Eingabe von stdout
.
Im Folgenden wird davon ausgegangen, dass der App-Name in oder der genaue Name der App in der Datei file.app.zip
ist :file
.zip
unzip -oq "file.app.zip" -d /tmp; open -a "/tmp/file.app"; sleep 1; rm -r "/tmp/file.app"
Die obige zusammengesetzte Befehlszeile extrahiert die file.app.zip
to /tmp
und öffnet sie dann, wartet eine Sekunde und löscht dann die /tmp/file.app
. Beachten Sie, dass der Wert des sleep
Befehls möglicherweise angepasst werden muss, damit die App nicht gelöscht wird, bevor sie geöffnet und beendet wurde.
Beachten Sie, dass der Inhalt von /tmp
, das eigentlich /private/tmp
, beim Neustart automatisch gelöscht wird. Die zusammengesetzte Befehlszeile könnte also verkürzt werden, wenn es Ihnen egal ist, ob die App /tmp'
bis zum nächsten Neustart aktiv bleibt:
unzip -oq "file.app.zip" -d /tmp; open -a "/tmp/file.app"
;
durch &&
eine zusätzliche Ebene der Fehlerbehandlung hinzufügen? Mein Verständnis ist, dass &&
sichergestellt wird, dass der nächste Befehl nur ausgeführt wird, wenn der vorherige ohne Fehler beendet wurde.Sie fordern den open
Befehl zum Öffnen von Inhalten von stdin
. open
kann zum Lesen gemacht werden, stdin
aber es öffnet den Inhalt in einem Texteditor - was nicht das ist, was Sie wollen.
Versuchen Sie es osascript
direkt: Wenn es sich bei der gezippten Datei einfach um AppleScript handelt, erreichen Sie dies folgendermaßen.
unzip -p file.zip | osascript -
Aus der osascript
Manpage:
osascript sucht das Skript an einer der folgenden drei Stellen:
Wird zeilenweise mit -e-Schaltern in der Befehlszeile angegeben.
Enthalten in der Datei, die durch den ersten Dateinamen in der Befehlszeile angegeben wird. Diese Datei kann einfacher Text oder ein kompiliertes Skript sein.
Wird mit der Standardeingabe übergeben. Dies funktioniert nur, wenn keine Dateinamensargumente vorhanden sind; Um Argumente an ein STDIN-Leseskript zu übergeben, müssen Sie explizit '-' für den Skriptnamen angeben.
0:1: syntax error: A unknown token can't go here. (-2740)
. Meine Test-ZIP-Datei enthält ein AppleScript mit folgendem Inhalt:do shell script "touch /Users/$USER/Desktop/test"
Zwieback
Lilie
open
HilfeoptionenZwieback
Lilie
-p
Option mit unzip druckt den Inhalt über stdoutZwieback
mmmmmm
Benutzer3439894
-p
im OP verwendeten Optionunzip -p ...
, z . Aus derunzip
Manpage : "-p extract files to pipe (stdout).
"