Mac OS X: script simples desejado

3

Estou procurando um script simples que faça o seguinte. Alguém pode dar um tiro nele (+ se enigmático, por favor, explique o que ele faz), ou me dê algumas dicas para que eu possa executar isso sozinho?

Eu quero iniciar uma aplicação GUI no diretório Applications a partir do prompt da linha de comando, dando-lhe parâmetros, se necessário:

$> launch Foobar arg1 arg2 arg3

O que o script de shell de inicialização deve fazer é:

1) Leia um arquivo de configuração parecido com isto:

/Applications/$0.app
/Applications/$0
/Applications/**/$0.app
/Applications/**/$0

2) Tente corresponder o primeiro argumento ("Foobar") neste caso com cada linha do arquivo de configuração, em ordem, com "*" representando qualquer seqüência de caracteres em um segmento de caminho e "**" representando qualquer segmento de caminho e $0 representando o nome do programa. Portanto, neste caso, ele está procurando por Foobar.app e Foobar no diretório Applications e em qualquer um de seus subdiretórios.

3) Execute o comando resultante com os argumentos restantes, conforme especificado ("arg1", "arg2", "arg3")

Parece fácil, mas eu sou muito novato com scripts de shell no momento. Eu posso acabar usando o JSDB desde que eu saiba como usá-lo. Não estou certo de como especificar que um script chamado "launch" exija que o programa JSDB o execute, ou se é compatível com isso.

Caso de uso específico: se eu estiver em um diretório no prompt de comando, geralmente quero seguir um destes procedimentos:

  • Inicie o TextEdit para criar um novo arquivo chamado X
  • Inicie o TextEdit para abrir um arquivo chamado X
  • Inicie {nome seu programa favorito} para criar ou abrir um arquivo chamado X
  • Abra uma janela do Finder neste diretório

Em particular, eu queria editar o meu arquivo Mercurial .hg / hgrc ontem, e demorei muito tempo para descobrir como, .hg é um diretório que está oculto das caixas de diálogo de abertura de arquivos da GUI. Ainda não me lembro como consegui que funcionasse.

    
por Jason S 17.07.2009 / 16:53

2 respostas

6

"open" é o comando que você quer. Use isto para ver as opções abertas

open -h

Você verá que para abrir algo no textedit, apenas use -e

open -e foo.txt

se não existir, basta "tocar" no arquivo e abri-lo:

touch foo.txt 
open -e foo.txt

Existem outras aplicações lá fora (como textmate) que eu acho que são melhores editores GUI que instalam seu próprio comando de linha de comando (ie: mate) que pode criar arquivos automaticamente.

Para abrir o arquivo atual com o editor padrão, apenas não passe nenhum comutado. Portanto, se os arquivos .txt estiverem associados ao seu sistema com o TextEdit, basta usar "open foo.txt". Como os diretórios são associados automaticamente ao Finder, use apenas

open .

para abrir o diretório atual no localizador.

    
por 17.07.2009 / 19:55
3

Uma maneira rápida de iniciar um aplicativo GUI a partir do Terminal é apenas usar open -a AppName . Mas você não pode passar os argumentos da linha de comando dessa maneira.

No entanto, parece que a minoria dos programas aceita até mesmo argumentos de linha de comando, seria loucura exigir que o usuário escrevesse um script como este apenas para usá-los. Aplicativos GUI que aceitam argumentos de linha de comando geralmente têm scripts de shell no PATH para manipulá-los, por exemplo, mvim .

Você poderia fornecer um exemplo mais específico do que você espera que esse roteiro alcançasse?

    
por 17.07.2009 / 18:53