Você precisa estar ciente de que, diferente de outras linguagens de script ou de programação, shell scripts pesadamente depende dos aplicativos de linha de comando fornecidos pelo SO. Isso significa que, como o OS X é um BSD, muitas das coisas que funcionam no Linux funcionarão um pouco diferente no seu computador, inutilizando muitos tutoriais. Em geral, você pode esperar que suas ferramentas de linha de comando tenham menos recursos e flexibilidade do que as contrapartes do Linux, embora haja exceções.
Se você não estiver familiarizado com o shell e não sentir uma grande necessidade de aprendê-lo, talvez seja melhor usar sua linguagem de script da Web favorita (PHP, Ruby, Python) na linha de comando. A vantagem é a API provavelmente mais consistente em toda a biblioteca de funções.
Em bash
em si, aprenda
- Condições (incluindo o uso de
test
/ [
... ]
para programação defensiva ao manusear arquivos)
- rotações
- Atribuição variável
- Funções
- Redirecionamento e tubulação de entrada e saída
- Chamar programas e funções de shell (incluindo como capturar sua saída e ler seus valores de retorno), tanto chamadas regulares quanto com substituição de comando.
- Opções eu amo
set -u
e se recusam a trabalhar com scripts que não podem lidar com isso.
- Tipos de variáveis, matrizes, globbing
O problema aqui é que bash
está muito ligado ao sistema com coisas como controle de tarefas e, para a criação de scripts complexos, tem uma curva de aprendizado bastante íngreme.
Na minha experiência * nenhuma seção do bash
A página man é desnecessária. Faz tempo suficiente e tudo lá é aplicável de alguma forma (e se é apenas para responder a perguntas sobre SU).
Alguns (na minha experiência) programas comumente usados em scripts de shell:
- Manipulação e navegação de arquivos:
find
, ls
, cd
, rm
, mv
, cp
, chmod
, chown
, chflags
, dd
, ln
- Execução do programa:
xargs
, find -exec
- Transformação de dados:
sort
, wc
, cat
, sed
, awk
, grep
Específicos para o OS X são provavelmente os seguintes:
launchctl
, open
, dscl
, PlistBuddy
, plutil
, osascript
, automator
, networksetup
, systemsetup
, growlnotify
(se você tiver Growl)
E, claro, dependendo da natureza exata do que você quer fazer, existem outros ...
date
(Variante BSD - muito diferente do GNU), mount
, fsck
, kill
, sendmail
Alguns, e. netcat
exigir que você instale pacotes de terceiros, por exemplo usando Homebrew, MacPorts ou Fink.
Se seus scripts usam intensamente esses programas de linha de comando, ou podem ser escritos de tal forma, bash
scripts são uma boa maneira de automatizar isso.
Como você está no OS X, procure também no AppleScript (via AppleScript Editor) e no Automator. Ambos podem ser combinados com scripts de shell para obter soluções de script bastante bem integradas. Se você está procurando controlar outros aplicativos do OS X (por exemplo, seu navegador da Web), eles são indispensáveis. Enquanto você pode abrir URLs em diferentes navegadores usando open
na linha de comando, recuperando dados, por exemplo das guias carregadas requer o Automator ou o AppleScript.
Além disso, outras linguagens de script, como ruby
, python
também são pré-instalados no seu Mac e podem ser usados para criar facilmente utilitários auxiliares simples. Estes são mais de uma substituição de bash
e utilitários regulares do UNIX. Depende da natureza do que você quer fazer.
Se você quiser mover um punhado de arquivos pelo seu disco, feche-os e transfira-os via SSH, bash
é provavelmente a melhor escolha. Assim que você tiver real lógica de programação (qualquer coisa que envolva muitos objetos ou números), você provavelmente deveria procurar em outras linguagens de script.