Faço bastante trabalho na linha de comando e me pego definindo muitos aliases do formulário:
alias skim='/Applications/Skim.app/Contents/MacOS/Skim'
Existe uma maneira de adicionar magia de tal forma que solicitar o executável "foo" use automaticamente o executável /Applications/Foo.app/Contents/MacOS/Foo? Isso está no OS X 10.6.
(Estou ciente de que poderia fazê-lo open foo.pdf
, mas o Skim não é o leitor de PDF padrão e eu gostaria de uma solução geral - em alguns casos, não é apropriado definir o aplicativo em questão como o manipulador padrão do arquivo.)
macos
snow-leopard
terminal
script
Reid
fonte
fonte
open -a Skim foo.pdf
.Respostas:
Finalmente entendi: Adicione isso ao seu
.bash_profile
Agora, o seguinte trabalho:
Editar por Reid:
Eu implementei o acima como um script Python que cria scripts de wrapper em vez de aliases. Você precisará colocar
~/bin/mankoffmagic
no seu caminho. Se você deseja que os wrappers sejam atualizados automaticamente, execute-o regularmente a partir de cron ou algo assim.fonte
ls
comando, e isso funcionará também.Você não precisa de nada extravagante, você já tem a resposta. Experimentar:
open /Applications/Foo.app bar.pdf
na edição
À luz dos comentários abaixo, acho que minha resposta ainda seria relativamente semelhante ... Eu criaria uma função que substitui a abertura, pressiona
/Applications
, chama/usr/bin/open $appName.app $args
, aciona e retorna.Eu sou péssimo em scripts de shell, mas algo como abaixo, que abrange casos especiais e mantém você usando praticamente a mesma sintaxe que a apple forneceu aberta. Eu gosto de manter meu ambiente o mais limpo possível.
Tenho certeza de que a sintaxe é do espaço sideral:
na segunda edição
olhando o comentário de @ mankoff sobre a pergunta original, a maioria das coisas na função acima provavelmente seria um desperdício de tempo, já que você poderia apenas usar
open -a $appName
. Então mankoff provavelmente tem a solução mais fácil e deve mudar seu comentário para uma resposta;)fonte
Existem duas soluções em que posso pensar:
A maneira mais fácil - Usando o
Info.plist
arquivo em cadaContents
diretório .app , crie um índice do valor para as chaves CFBundleExecutable. Em seguida, adicione um pequeno apelido que chame um script (perl, python, qualquer que seja) com o nome de um executável e os argumentos que você gostaria de passar.Seu índice seria pares de nomes de executáveis e caminhos para esses executáveis. Você precisaria escrever um script agendado recorrente para manter isso atualizado.
Você poderia ligar para:
onde f é um alias para um script que verifica seu índice em busca de um executável chamado
foo
.Em suma, não há muito trabalho para obter a funcionalidade que você deseja.
A maneira mais difícil - Estenda seu shell para complementar a manipulação de seu
command_not_found
erro. Essencialmente, você implementaria umamethod_missing
funcionalidade no estilo Ruby dentro de qualquer shell que estiver usando. Quandocommand_not_found
lançado, seu método verifica os nomes dos executáveis dos aplicativos instalados.fonte
Applescript para o resgate:
Substitua o nome do aplicativo pelo aplicativo que você deseja iniciar e pronto. Obviamente, você pode torná-lo uma função shell, se necessário:
e use dessa maneira:
Eu odeio o AppleScript, mas às vezes é útil e acredito que a única maneira de abordar um aplicativo simplesmente pelo nome na linha de comando. Tudo o resto exigirá um caminho completo.
fonte