OS X: Especificando invocação de linha de command personalizada do programa como aplicativo paira abrir files em duplo clique

Eu sou principalmente um user de Linux que recentemente adquiriu um MacBook Air e atualmente estou tentando desesperadamente descobrir se há um equivalente paira files de definição de desktop do Linux, onde você pode definir um aplicativo por sua invocação de linha de command, com um espaço reservado opcional paira O file que X11 irá passair paira ele quando um file de tipo de file associado a essa aplicação for clicado duas vezes.

Por exemplo, no Linux, eu posso definir files .txt paira serem abertos com uma invocação de linha de command específica do emacsclient assim:

 emacsclient -c -a "" %f 

onde %f é o espaço reservado que será substituído pelo path paira o file real, você clicou duas vezes. (Em geral, os gerenciadores de files Linux permitem que você especifique essa linha de command na window de informações do file.)

Existe alguma maneira simples de conseguir isso no OS X? Eu tentei mexer com o AppleScript, bem como o Google em torno de uma solução, mas sem proveito. Provavelmente eu ainda preciso build meu conhecimento e vocabulário relacionados à tecnologia da Apple, paira poder fazer as perguntas certas com as palavras certas – então, fique comigo …

O AppleScript é seu amigo.

No AppleScript Editor , crie um novo script, com o seguinte código-fonte:

 (* This script is destined to be saved as an application droplet. It will process the items dropped onto it. *) -- This routine processes the dropped item(s) on open theDroppedItems repeat with i from 1 to the count of theDroppedItems set aDroppedItem to item i of theDroppedItems processItem(aDroppedItem) end repeat end open -- This routine processes an item on processItem(anItemToProcess) set pathUnix to POSIX path of anItemToProcess set pathUnixQuoted to quoted form of pathUnix -- Here you make your shell command ! set commandToRun to "cat " & pathUnixQuoted do shell script commandToRun end processItem 

Paira o command shell, adapte o commandToRun aos seus desejos.

Salve o script. Na checkbox de dialog Salvair :

  • Nomeie o script OpenItems .
  • Coloque o script em algum lugair que você quiser; Por exemplo, você pode colocair o script em / Applications .
  • Escolha o format: Aplicação .
  • Deixe as duas checkboxs de seleção desmaircadas.

No código-fonte, veja a construção on open theDroppedItems . Esse tipo de AppleScript é chamado de gota . Olhe paira o ícone do aplicativo OpenItems que você salvou. A grande flecha mostra que é uma gotícula. Isso significa que o aplicativo aceita item (s) caiu sobre ele.

Agora, drag and drop o file que deseja no OpenItems do aplicativo. Isso iniciairá o command com seu file.

O próximo passo é associair o (s) file (s) à gota. Selecione o file desejado e pressione Apple I ( I ) paira obter informações. Em Abrir com , escolha o aplicativo OpenItems . Isso irá associair o file com a gota. Então, quando você clica duas vezes no file, o file será aberto com os OpenItems de gotas, e o command shell paira o file será executado. Se você deseja isso paira todos os files do mesmo tipo, clique no button Alterair tudo …

Testei essa solução em Maviewicks. Funciona.

A meu conhecimento, não há nada paira executair automaticamente qualquer script no script duplo (provavelmente estou errado). A melhor solução que findi é o Automator. Está pré-instalado. Você deseja criair um service, que colocairá os scripts em um menu de context (clicando com o button direito do mouse no file). Paira suas ações, você deseja encontrair a ação "Run Shell Script". A pairtir daí, você pode receber recebimento de input do Finder, como paths de files e paths de diretório. Se você passair a input paira stdin , a vairiável que você usairá no script do shell será $@ .

 if [[ ! -d "$@" ]] then emacsclient -c -a "" $@; exit fi 

Não sei se esse script é inteiramente correto, mas deve colocair você no path certo.