Bash/Shell


O Bash é o shell desenvolvido para o projecto GNU, da Free Software Foundation, que se tornou padrão nas várias distribuições Linux. Pode ser usado também com outros sistemas operacionais, como o Unix; há versões para o sistema Microsoft Windows₢ (como o do projeto Cygwin), algumas com as bibliotecas necessárias embutidas no binário (no caso do winbash; o que torna desnecessário instalar o ambiente POSIX inteiro para ter apenas o bash). É compatível com o Bourne shell (sh), incorporando os melhores recursos do C shell (csh) e do Korn Shell (ksh). - Via Wikipedia

Programando

Bash é uma poderosa linguagem de programação, o intuito dessa página é explicar, de maneira reduzida e condensada, como programar em bash :)

Normalmente para testar/executar um bash script (ou shell script), são necessárias os seguintes pontos:

  1. Indicar qual será compilador(?) que irá executar o script
  2. Dar permissão de execução para o arquivo
  3. executar o arquivo

Indicar em que linguagem se está programando

No começo de cada arquivo que você for executar em uma linha de comando, tem-se a boa prática de indicar para o sistema qual executável que irá compilar aquele monte de coisas que você escreveu, portanto para essa página, o topo de cada um dos arquivos (scripts) que criarmos será:

#!/bin/bash

Isso quer dizer: quando executarmos o script ele o computador irá compila-lo pelo executável /bin/bash (digite which bash para verificar o caminho correto)

Pontos importantes

Durante a escrita do programa / script você deve ter muita atenção na sintaxe que será utilizada, pequenos detalhes fazem toda a diferença:

#!/bin/bash

# Isso é um comentário

#declarar uma variável xa com valor ragazzid
xa="ragazzid"
#ou
xa=ragazzid

#declarar errado
xa= "ragazzid"
#ou
xa = "ragazzid"

#tem que deixar (bem) juntinho mesmo ;

Tenha em mente que '’ é diferente de "” que por sua vez é diferente de ``, cada um dos 3 tem um significado diferente para o interpretador (/bin/bash)

  • '’ tudo que estiver ali dentro será tratado como string, ou seja se você colocar uma variável dentro do '’ ela não exibira o seu conteúdo
  • "” quer dizer que você irá misturar tudo, variável, número, texto - ou seja, “Algo $variavel” irá exibir Algo é o valor da variável
  • `` Tratará como um comando (tentará executar) mais para baixo teremos mais exemplos, mas mantenha isso em mente
#!/bin/bash

a="meu nome"
echo $a   #exibe meu nome
echo "$a" #exibe meu nome
echo '$a' #exibe $a
echo `$a` #gera erro - pois não existe função meu nome

Executando funções/programas dentro do script

Para chamar uma variável já declarada é necessário adicionar o caractere $ antes do nome:

#!/bin/bash

#declarar a variavel oi com valor "bom dia"
oi="bom dia"

echo $oi

echo é um programa que usamos livremente na CLI de um UNIX, portanto podemos dizer que QUALQUER comando que você use na CLI você pode integrar ele com o seu shell script, os mais usados são:

  • grep
  • cut
  • bc (calculadora)
  • wget
  • apt-get
  • yum
  • cat
  • mysql (sim, dá pra chamar mysql dentro de um shell script)
  • uptime
  • scp
  • ssh
  • telnet
  • qualquerCoisa
  • etc

Nijustu

#!/bin/bash

for a in {1..20}; do 
  curl 'http://www.webpage.com/site' > /tmp/$a.dd 2>&1 &
done