171 votes

Lancer une application sur OS X avec une ligne de commande

Je veux lancer une application sur OSX à partir d'un script. J'ai besoin de passer les arguments en ligne de commande. Malheureusement, 'open' n'accepte pas les arguments en ligne de commande.

La seule option à laquelle je peux penser est d'utiliser 'nohup myApp> / dev / null &' pour lancer mon application afin qu'elle puisse exister indépendamment du script qui la lance.

De meilleures suggestions?

147voto

John McDonnell Points 612

Comme cela a été mentionné ici , la commande 'open' dans 10.6 a maintenant un indicateur 'args', vous pouvez donc appeler:

open -n ./AppName.app --args -AppCommandLineArg

111voto

Ned Deily Points 40248

App OS X faisceaux ne sont pas conçus pour être passé arguments de ligne de commande; le classique mécanisme est d'utiliser les Événements de Apple pour les fichiers comme ici pour des applications Cocoa ou ici pour les applications Carbon. Vous pourrait probablement faire quelque chose kludgey en passant des paramètres à l'aide de variables d'environnement.

Mise à jour: Notez dans OS X 10.6 l' open de commande a été amélioré pour permettre la transmission d'arguments à la demande si il ya une autre option si vous avez seulement besoin de soutien 10.6 et au-delà.

58voto

MathieuK Points 2888

Un ensemble d'applications (un fichier .app) est en réalité un groupe de répertoires. Au lieu d'utiliser 'open' et le nom .app, vous pouvez y accéder et démarrer le binaire réel. Par exemple:

 $ cd /Applications/LittleSnapper.app/
$ ls
Contents
$ cd Contents/MacOS/
$ ./LittleSnapper
 

C'est le binaire réel qui pourrait accepter des arguments (ou non, dans le cas de LittleSnapper).

19voto

eshedg Points 1

si votre application doit travailler sur des fichiers (ce que vous vous attendez normalement à transmettre en tant que: "./myApp * .jpg"), procédez comme suit:

 open *.jpg -a myApp
 

4voto

Paul Irish Points 17507

Je recommanderais la technique proposée par MathieuK. Dans mon cas, je devais l'essayer avec Chromium:

 > Chromium.app/Contents/MacOS/Chromium --enable-remote-fonts
 

Je réalise que cela ne résout pas le problème du PO, mais j'espère que cela fera gagner du temps à quelqu'un d'autre. :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X