Quero lançar um aplicativo no OSX a partir de um script. Preciso passar argumentos de linha de comando. Infelizmente, open
não aceita argumentos de linha de comando.
A única opção que consigo pensar é usar nohup myApp > /dev/null &
para iniciar meu aplicativo para que ele exista independentemente do script que o inicia.
Alguma sugestão melhor?
nohup &
resolver o problema?Respostas:
No OS X 10.6, o
open
comando foi aprimorado para permitir a passagem de argumentos para o aplicativo:Mas para versões mais antigas do Mac OS X, e porque os pacotes de aplicativos não foram projetados para serem passados com argumentos de linha de comando, o mecanismo convencional é usar Apple Events para arquivos como aqui para aplicativos Cocoa ou aqui para aplicativos Carbon. Você provavelmente também poderia fazer algo estranho passando parâmetros ao usar variáveis de ambiente.
fonte
open
- como diz a resposta - não foram projetados para funcionar na linha de comando. "Por quê?" Porque é assim que o Mac OS X é.Como foi mencionado na pergunta aqui , o
open
comando em 10.6 agora tem umargs
sinalizador, então você pode chamar:open -n ./AppName.app --args -AppCommandLineArg
fonte
Um pacote de aplicativos (um
.app
arquivo) é, na verdade, um monte de diretórios. Em vez de usaropen
e o.app
nome, você pode realmente ir até ele e iniciar o binário real. Por exemplo:Esse é o binário real que pode aceitar argumentos (ou não, no
LittleSnapper
caso de).fonte
DYLD_LIBRARY_PATH
,DYLD_FRAMEWORK_PATH
.Caso seu aplicativo precise funcionar em arquivos (o que você normalmente esperaria passar por:)
./myApp *.jpg
, você faria assim:fonte
open something.py -a Eclipse.app
Eu recomendaria a técnica que MathieuK oferece. No meu caso, precisava tentar com o Chromium:
Sei que isso não resolve o problema do OP, mas espero que economize o tempo de outra pessoa. :)
fonte
open
também tem um sinalizador -a, que você pode usar para abrir um aplicativo de dentro da pasta Aplicativos por seu nome (ou pelo identificador de pacote com sinalizador -b). Você pode combinar isso com a opção --args para obter o resultado que deseja:Para abrir um vídeo no player VLC que deve ser dimensionado com um fator 2x e loop, você executaria, por exemplo:
Observe que não consegui obter a saída dos comandos para o terminal. (embora eu não tenha tentado nada para resolver isso)
fonte
open -a
intencionalmente ?? Em qualquer caso,open -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir=/Users/an/userll
não funciona para mim.Eu queria ter duas instâncias separadas do Chrome rodando, cada uma usando seu próprio perfil. Eu queria ser capaz de iniciá-los no Spotlight , como é meu hábito para iniciar aplicativos Mac. Em outras palavras, eu precisava de dois aplicativos regulares do Mac,
regChrome
para navegação normal ealtChrome
para usar o perfil especial, para serem iniciados facilmente digitando ⌘-espaço para abrir o Spotlight, então 'reg' ou 'alt' e, em seguida, Enter.Suponho que a forma de força bruta de atingir o objetivo acima seria fazer duas cópias do pacote de aplicativos do Google Chrome com os respectivos nomes. Mas isso é feio e complica a atualização.
Acabei com dois aplicativos AppleScript contendo dois comandos cada. Aqui está aquele para
altChrome
:A segunda linha inicia o Chrome com o perfil alternativo (o
--user-data-dir
parâmetro).A primeira linha é uma tentativa malsucedida de dar aos dois aplicativos ícones distintos. Inicialmente, parece funcionar bem. No entanto, mais cedo ou mais tarde, o Chrome relê seu arquivo de ícone e obtém o correspondente ao que quer que seja o último dos dois aplicativos que foi iniciado, resultando em dois aplicativos em execução com o mesmo ícone. Mas não me preocupei em tentar consertá-lo - mantenho os dois navegadores em desktops separados e navegar entre eles não tem sido um problema.
fonte
Começando com o OS X Yosemite , agora podemos usar AppleScript e Automator para automatizar tarefas complexas. JavaScript para automação agora pode ser usado como linguagem de script.
Esta página fornece um bom exemplo de script que pode ser escrito na linha de comando usando bash e modo interativo osascript . Ele abre uma guia Safari e navega para
http://developer.telerik.com/featured/javascript-os-x-automation-example/example.com
.fonte
Com applecript:
fonte
Por que não apenas definir o caminho de adição para o compartimento do aplicativo. Para MacVim, fiz o seguinte.
Um alias é outra opção que tentei.
Com o PATH de exportação, posso chamar todos os comandos do aplicativo. Os argumentos passaram bem no meu teste com MacVim. Considerando o alias, tive que criar um alias para cada comando na caixa.
Aproveite o poder do alias e do PATH. No entanto, você precisa monitorar as alterações quando o sistema operacional é atualizado.
fonte
Simples, aqui substitua o "APP" pelo nome do aplicativo que deseja lançar.
Me agradeça mais tarde.
fonte
Você pode iniciar aplicativos usando
open
:Isso deve abrir o aplicativo que você deseja.
fonte