Quiero lanzar una aplicación en OSX desde un script. Necesito pasarle argumentos de línea de comando. Desafortunadamente, open
no acepta argumentos de línea de comando.
La única opción que se me ocurre es utilizar nohup myApp > /dev/null &
para iniciar mi aplicación para que pueda existir independientemente del script que la inicie.
¿Alguna sugerencia mejor?
nohup &
resuelve el problema?Respuestas:
En OS X 10.6, el
open
comando se mejoró para permitir el paso de argumentos a la aplicación:Pero para versiones anteriores de Mac OS X, y debido a que los paquetes de aplicaciones no están diseñados para pasar argumentos de línea de comandos, el mecanismo convencional es usar Apple Events para archivos como aquí para aplicaciones Cocoa o aquí para aplicaciones Carbon. Probablemente también podría hacer algo torpe pasando parámetros al usar variables de entorno.
fuente
open
, como dice la respuesta, no están diseñadas para funcionar desde la línea de comandos. "¿Por qué?" Porque así es Mac OS X.Como se mencionó en la pregunta aquí , el
open
comando en 10.6 ahora tiene unaargs
bandera, por lo que puede llamar:open -n ./AppName.app --args -AppCommandLineArg
fuente
Un paquete de aplicaciones (un
.app
archivo) es en realidad un grupo de directorios. En lugar de usaropen
y el.app
nombre, puede pasar a él e iniciar el binario real. Por ejemplo:Ese es el binario real que podría aceptar argumentos (o no, en
LittleSnapper
el caso de).fuente
DYLD_LIBRARY_PATH
,DYLD_FRAMEWORK_PATH
.En caso de que su aplicación necesite trabajar en archivos (lo que normalmente esperaría pasar como :)
./myApp *.jpg
, lo haría así:fuente
open something.py -a Eclipse.app
Recomendaría la técnica que ofrece MathieuK. En mi caso, necesitaba probarlo con Chromium:
Me doy cuenta de que esto no resuelve el problema del OP, pero espero que le ahorre tiempo a otra persona. :)
fuente
open
también tiene un indicador -a, que puede usar para abrir una aplicación desde la carpeta Aplicaciones por su nombre (o por el identificador de paquete con el indicador -b). Puede combinar esto con la opción --args para lograr el resultado que desea:Para abrir un video en el reproductor VLC que debería escalar con un factor 2x y un bucle, por ejemplo, debería ejecutar:
Tenga en cuenta que no pude obtener la salida de los comandos al terminal. (aunque no intenté nada para resolver eso)
fuente
open -a
intencionalmente? En cualquier caso,open -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir=/Users/an/userll
no me funciona.Quería tener dos instancias separadas de Chrome ejecutándose, cada una con su propio perfil. Quería poder iniciarlos desde Spotlight , como es mi costumbre al iniciar aplicaciones de Mac. En otras palabras, necesitaba dos aplicaciones Mac
regChrome
normales , para la navegación normal yaltChrome
para usar el perfil especial, para iniciarlas fácilmente tecleando ⌘-espacio para abrir Spotlight, luego 'reg' o 'alt', luego Enter.Supongo que la forma de fuerza bruta para lograr el objetivo anterior sería hacer dos copias del paquete de aplicaciones de Google Chrome con los nombres respectivos. Pero eso es feo y complica la actualización.
Lo que terminé con fueron dos aplicaciones de AppleScript que contienen dos comandos cada una. Aquí está el de
altChrome
:La segunda línea inicia Chrome con el perfil alternativo (el
--user-data-dir
parámetro).La primera línea es un intento fallido de dar a las dos aplicaciones iconos distintos. Inicialmente, parece funcionar bien. Sin embargo, tarde o temprano, Chrome vuelve a leer su archivo de icono y obtiene el correspondiente a la última de las dos aplicaciones que se inició, lo que da como resultado dos aplicaciones en ejecución con el mismo icono. Pero no me he molestado en intentar solucionarlo: mantengo los dos navegadores en escritorios separados y navegar entre ellos no ha sido un problema.
fuente
Comenzando con OS X Yosemite , ahora podemos usar AppleScript y Automator para automatizar tareas complejas. JavaScript para la automatización ahora se puede utilizar como lenguaje de programación.
Esta página ofrece un buen ejemplo de script de ejemplo que se puede escribir en la línea de comando usando bash y el modo interactivo osascript . Abre una pestaña de Safari y navega a
http://developer.telerik.com/featured/javascript-os-x-automation-example/example.com
.fuente
Con applecript:
fuente
¿Por qué no establecer simplemente agregar ruta al contenedor de la aplicación? Para MacVim, hice lo siguiente.
Un alias, es otra opción que probé.
Con la ruta de exportación puedo llamar a todos los comandos en la aplicación. Los argumentos pasaron bien para mi prueba con MacVim. Mientras que el alias, tuve que asignar un alias a cada comando en el contenedor.
Disfrute del poder de alias y PATH. Sin embargo, debe controlar los cambios cuando se actualiza el sistema operativo.
fuente
Sencillo, aquí reemplace la "APLICACIÓN" por el nombre de la aplicación que desea iniciar.
Gracias luego.
fuente
Puede iniciar aplicaciones usando
open
:Esto debería abrir la aplicación que desee.
fuente