Estoy tratando de ejecutar una aplicación AppleScript que está comprimida.
unzip -p file.app.zip | open -
o
open < $(unzip -p file.app.zip)
es posible?
Como se trata de una aplicación .app
comprimida en zip , que es un paquete de aplicaciones con muchos archivos, creo que primero tendrá que extraer la aplicación al disco para abrirla, porque el open
comando para abrir una aplicación tiene la forma de open -a ...
y no toma entrada de stdout
.
Lo siguiente asume que el nombre de la aplicación file.app.zip
es file
o el nombre exacto de la aplicación dentro del .zip
archivo:
unzip -oq "file.app.zip" -d /tmp; open -a "/tmp/file.app"; sleep 1; rm -r "/tmp/file.app"
La línea de comando compuesta anterior extrae el archivo file.app.zip
to /tmp
y luego lo abre, espera un segundo y luego elimina el archivo /tmp/file.app
. Tenga en cuenta que es posible que sea necesario ajustar el valor del sleep
comando para que la aplicación no se elimine antes de que se abra y termine de ejecutarse.
Tenga en cuenta que el contenido de /tmp
, que en realidad es /private/tmp
, se elimina automáticamente al reiniciar. Por lo tanto, la línea de comando compuesta podría acortarse si no le importa si la aplicación permanece /tmp'
hasta el próximo reinicio:
unzip -oq "file.app.zip" -d /tmp; open -a "/tmp/file.app"
;
con &&
agregaría una capa adicional de manejo de errores? Tengo entendido que &&
garantiza que el siguiente comando solo se ejecute si el anterior finalizó sin errores.Está solicitando el open
comando para abrir contenido de stdin
. open
se puede hacer para leer, stdin
pero abrirá los contenidos en el editor de texto, que no es lo que desea.
Intente usar osascript
directamente: si el archivo comprimido es simplemente AppleScript, entonces lo logra con lo siguiente.
unzip -p file.zip | osascript -
De la osascript
página de manual:
osascript buscará el script en uno de los siguientes tres lugares:
Especificado línea por línea usando los modificadores -e en la línea de comando.
Contenido en el archivo especificado por el primer nombre de archivo en la línea de comando. Este archivo puede ser texto sin formato o un script compilado.
Aprobado usando la entrada estándar. Esto funciona solo si no hay argumentos de nombre de archivo; para pasar argumentos a un script de lectura STDIN, debe especificar explícitamente '-' para el nombre del script.
0:1: syntax error: A unknown token can't go here. (-2740)
. Mi prueba .zip contiene un AppleScript con lo siguiente:do shell script "touch /Users/$USER/Desktop/test"
Ruscos
lirio
open
opciones de ayuda.Ruscos
lirio
-p
opción con descomprimir imprime el contenido usando stdoutRuscos
mmmmmm
usuario3439894
-p
opción utilizada en el OP, por ejemplounzip -p ...
! De launzip
página man : "-p extract files to pipe (stdout).
"