Como configuro um script de shell para executar a partir do dock do Mac OSX? Parece que simplesmente criar um atalho abrirá o arquivo no meu editor. Existe um sinalizador que eu preciso definir em algum lugar para dizer para executar, em vez de abri-lo para edição?
160
Respostas:
Você pode criar um fluxo de trabalho do Automator com uma única etapa - "Executar script do shell"
Em seguida
File > Save As
, altere o formato do arquivo para "aplicativo". Quando você abre o aplicativo, ele executa a etapa Shell Script, executando o comando, saindo após a conclusão.O benefício disso é que é realmente simples de fazer, e você pode facilmente obter a entrada do usuário (por exemplo, selecionando um monte de arquivos) e depois passá-la para a entrada do script do shell (para stdin ou como argumentos).
(O Automator está na sua
/Applications
pasta!)fonte
open -a SomeAppThing.app --args --etc=2
ele deve se concentrar. Como alternativa, você pode focalizá-lo usando o Applescript (por exemploosascript -e 'tell application "Google Chrome" to activate'
)Se você não precisar de uma janela do Terminal, poderá transformar qualquer arquivo executável em um Aplicativo apenas criando um shell script
Example
e movendo-o para o nome do arquivoExample.app/Contents/MacOS/Example
. Você pode colocar esse novo aplicativo no seu dock como qualquer outro e executá-lo com um clique.NOTA: o nome do aplicativo deve corresponder exatamente ao nome do script. Portanto, o diretório de nível superior deve ser
Example.app
e o script noContents/MacOS
subdiretório deve ser nomeadoExample
e o script deve ser executável.Se você precisa exibir a janela do terminal, não tenho uma solução simples. Você provavelmente poderia fazer algo com o Applescript, mas isso não é muito limpo.
fonte
example.sh.app
, não apenasexample.app
. Você receberá um aviso sobre aplicativo danificado se estes não corresponderem.app
nessa estrutura, ela será tratada como um Aplicativo executável. Se você quiser ver o conteúdo dessa pasta no Finder, clique com o botão direito do mouse nela e selecione "exibir o conteúdo do pacote" (porque clicar duas vezes nela executaria o aplicativo). No terminal, parecerá apenas uma pasta. (Eu não tenho certeza se do Finder permite-lhe mudar o nome da pasta para .app, por si só, você pode precisar de fazer a renomeação no Terminal.)No OSX Mavericks:
Torne seu script de shell executável:
Renomeie seu script para ter um
.app
sufixo:Renomeie seu script de volta para um
.sh
sufixo:Agora, quando você clica no script no dock, uma janela do terminal será exibida e o executará.
Bônus: para que o terminal feche quando o script for concluído, adicione
exit 0
no final e altere as configurações do terminal para "fechar o shell se for encerrado corretamente", como diz nesta resposta do SO .fonte
Eu sei que isso é antigo, mas no caso de ser útil para outras pessoas:
Se você precisar executar um script e desejar que o terminal apareça, poderá ver os resultados que pode fazer como Abyss Knight disse e alterar a extensão para .command. Se você clicar duas vezes nele, abrirá uma janela do terminal e será executada.
No entanto, eu precisava disso para executar a partir do automator ou appleScript. Portanto, para abrir um novo terminal, o comando que eu executei em "executar script de shell" foi "abrir myShellScript.command" e foi aberto em um novo terminal.
fonte
Contanto que seu script seja executável e não tenha nenhuma extensão, você pode arrastá-lo para o lado direito (lado do documento) do Dock e ele será executado em uma janela de terminal quando clicado em vez de abrir um editor.
Se você deseja ter uma extensão (como foo.sh), pode ir para a janela de informações do arquivo no Finder e alterar o aplicativo padrão para esse script específico, independentemente do que seja (TextEdit, TextMate, qualquer padrão definido no seu computador para arquivos .sh) para o Terminal. Ele será executado apenas em vez de abrir em um editor de texto. Novamente, você precisará arrastá-lo para o lado direito do Dock.
fonte
Acho que esse tópico pode ser útil: http://forums.macosxhints.com/archive/index.php/t-70973.html
Parafraseando, você pode renomeá-lo com a extensão .command ou criar um AppleScript para executar o shell.
fonte
Como Joe mencionou, a criação do shell script e, em seguida, a criação de um script applecript para chamar o shell script, fará isso e é bastante útil.
Shell Script
Crie seu script de shell no seu editor de texto favorito, por exemplo:
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(isso executa o executável w32, usando a estrutura mono)
Salvar script de shell, para o meu exemplo "StartKeepass.sh"
Apple Script
Abra o AppleScript Editor e chame o shell script
do shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges
do shell script
- Comando AppleScriptcript para chamar comandos externos do shell"sh ...."
- este é seu script de shell (caminho completo) criado na etapa um (você também pode executar comandos diretos, eu poderia omitir o script de shell e apenas executar meu comando mono aqui)user name
- declara para AppleScript que você deseja executar o comando como um usuário específico"<enter username here>
- substitua pelo seu nome de usuário (mantendo aspas) ex "josh"password
- declara para AppleScript sua senha"<enter password here>"
- substitua por sua senha (mantendo aspas) ex "mypass"with administrative privileges
- declara que deseja executar como administradorCrie seu .APP
salve seu AppleScript como filename.scpt, no meu caso RunKeepass.scpt
salve como ... seu AppleScript e altere o formato do arquivo para o aplicativo, resultando em RunKeepass.app no meu caso
Copie seu arquivo de aplicativo para a pasta de aplicativos
fonte
No Editor de scripts:
do shell script "/full/path/to/your/script -with 'all desired args'
"Salve como um pacote de aplicativos.
Contanto que tudo que você deseja fazer seja obter o efeito do script, isso funcionará bem. Você não verá STDOUT ou STDERR.
fonte
Alguém escreveu ...
fonte