Como executo scripts de linha de comando?

17

No Windows, eu posso criar .batarquivos. Clico duas vezes e todas as linhas são interpretadas como se eu a tivesse inserido no console.

No OS X, qual arquivo ou programa devo usar? Se eu quiser escrever um arquivo com;

 echo hello world

Quero clicar duas vezes neste arquivo e executá-lo em um console. Como eu faço isso?

Rodrigo
fonte
o arquivo precisa ser executado ao clicar duas vezes ou você deseja apenas executá-lo digitando o nome do arquivo?
Phil M
arquivo clicado duas vezes é mais rápido :)
Rodrigo

Respostas:

24

Os fundamentos do terminal no OS X são os mesmos que os usados ​​no Linux. O que você está procurando especificamente é chamado de "Shell Scripting".

O shell padrão quando você abre Terminal.app(localizado em /Applications/Utilties) é o shell bash.

O OS X teve um manipulador de shell embutido acessível via Finder e outros aplicativos através da .commandextensão, embora frustrantemente não através da .shextensão. No entanto, configurar o script para ser executado através do Finder é ainda mais complicado.

  1. Crie um script de shell simples, como no seu exemplo, criei um aplicativo Hello World:
#!/bin/bash
echo "Hello World"
  1. Salve este arquivo como HelloWorld.command.

  2. Conceda a este arquivo permissão para ser executado. chmod u+x HelloWorld.commanddeveria fazer isso.

  3. Abra o diretório em que você salvou este arquivo no Finder. Em seguida, clique duas vezes no HelloWorld.commandarquivo.

Isso abrirá um terminal e executará o script; a saída no meu computador é a seguinte:

$ /Users/jason/Applications/HelloWorld.command; Saída;
Olá,
logout do mundo

[Processo completo]

A maneira alternativa de executar esse arquivo é enquanto você ainda está no Terminal, simplesmente ./HelloWorld.commandassumindo que você está no mesmo diretório que o arquivo.

Fazer isso resultará em uma saída muito mais simples:

Aplicativos jason-mac $ ./HelloWorld.command
Hello World
Aplicativos jason-mac $

Você acabou de criar e executar um shell script no OS X!

Jason Salaz
fonte
Como um aparte: É ridiculamente frustrante que o OS X não faça isso com arquivos ".sh", apenas arquivos ".command". Sim, é possível alterar isso, mas o comando. Já existe, portanto, esta é minha solução sugerida.
Jason Salaz
Deseja fazer a pergunta como injetar .sh no banco de dados dos serviços de inicialização ou devo?
Bmike
Você obviamente teve a ideia (o pensamento nem me passou pela cabeça), então você pode fazê-lo.
Jason Salaz
Eu tive a idéia de você - aqui vai, ima perguntar tudo sobre o seu próprio ...
bmike
Dá-me:chown: u+x: Invalid argument
Rodrigo
4

O equivalente do console ou prompt de comando no Windows é o aplicativo Terminal localizado em / Aplicativos / Utilitários /

O equivalente ao DOS (ou o que eles estão chamando hoje em dia) é "bash"

O equivalente a um arquivo em lotes (.bat) no Windows é um script de shell (.sh)

Basta fazer uma pesquisa no Google por "bash" "reference" e você descobrirá o resto. Eu também recomendaria comprar o Bash Cookbook (O'Reilly).

Especificamente, isso seria o que você digitaria em uma janela de terminal para obter o script "hello world":

Para criar o arquivo:

    echo "echo hello world" > file.sh

Para alterar as permissões para tornar o arquivo executável:

    chmod 755 file.sh

Para executar o script:

    ./file.sh

Se você deseja clicar duas vezes nele no Finder, clique com o botão direito do mouse (ou clique com a tecla Control pressionada) no arquivo e selecione Obter informações e, em Abrir com, selecione o aplicativo Terminal. Ou você pode usar a extensão .command em vez da extensão .sh.

Phil M
fonte
2

Você provavelmente quer dar uma olhada no AppleScript. Este livro de Sal Soghoian é considerado por muitos o livro mais procurado no AppleScript.

Outra maneira agradável para os usuários automatizarem aplicativos para Mac é usar o Automator . Você pode tentar também. Espero que isto ajude.

Atualizar

Parece que você está procurando algo como scripts de shell Unix. Estes dois tutoriais são decentes e parecem cobrir o básico.

Christian Correa
fonte
Eu vi isso, mas o AppleScript não é o script do terminal. Eu acho que você pode fazer: "Vá para o terminal e escreva x command". Bem, não é o estilo .bat (e pouco mais difícil)
Rodrigo
Parece que scripts de shell Unix é o que você está procurando.
Christian Correa
0

Scripts de shell. Eu não acho que o Ask Different seria o local adequado para discuti-lo em profundidade, mas há um guia muito detalhado aqui: http://tldp.org/LDP/abs/html/index.html

O Mac OS X é certificado UNIX a partir da 10.5 (certo?), Portanto, essa sabedoria aqui também é aplicável ao Linux e outros sistemas operacionais semelhantes ao UNIX.

(de uma maneira menos complexa, o Automator do Mac OS X é bastante poderoso, assim como o Editor AppleScript, que pode executar scripts de shell e outros comandos com programas e envolvê-los em um pacote .app conveniente para Launchpad ou compartilhar com amigos)

Swizzlr
fonte
Desde a introdução do guia, eu vinculei: "Um programa shell, chamado de script, é uma ferramenta fácil de usar para criar aplicativos" colando "chamadas de sistema, ferramentas, utilitários e binários compilados. Praticamente todo o repertório de Os comandos, utilitários e ferramentas do UNIX estão disponíveis para chamada por um script de shell. Se isso não bastasse, os comandos internos do shell, como testes e construções de loop, fornecem energia e flexibilidade adicionais aos scripts ".
Swizzlr 04/08/19
E por "lugar adequado" Eu acho shell script é realmente melhor discutido mais em SuperUser: superuser.com/questions/tagged/shell-script
Swizzlr
-2

Para mac é o arquivo .sh, também conhecido como script Shell

Davide
fonte
Mas ao chamá-lo do localizador, você desejará usar .command. .shé um tipo de arquivo não tratado do localizador (por padrão).
Jason Salaz