Introdução à Shell Script
      Vinícius Alves Hax

       Agosto de 2010
      TchêLinux Pelotas
Palestrante
●   Engenheiro de Computação pela FURG
●   Analista  de  TI  no  Centro  de  Ciências 
    Computacionais – FURG
●   Sócio­fundador  da  Zetaflops  –  Computação  de 
    Alto Desempenho
●   Usuário Linux desde 2004


                                                   2
Conteúdo
●   Filosofia  dos  sistemas  Unix  e  como  os 
    programas se comunicam
●   O que é shell? O que é bash?
●   Entrada e saída em bash
●   Estruturas de controle no bash (for, if, while)
●   Alguns  utilitários  interessantes:  awk,  head,  tail, 
    sort, etc
                                                          3
Filosofia dos sistemas Unix




Algumas maneiras de pensar que estão atreladas 
         ao próprio desenvolvimento



                                              4
Filosofia dos sistemas Unix




“Escreva programas que resolvam um único 
       problema, e faça bem feito.” 
                                            5
Filosofia dos sistemas Unix
    Armazene dados em arquivos de texto
●   Cabível de edição manual
●   Mais  fácil  escrever  programas  que  manipulem 
    esses arquivos




                                                   6
Filosofia dos sistemas Unix




Automatize as tarefas (mas não exagere!)
                                           7
Filosofia dos sistemas Unix



 Escreva programas que "conversem" com outros: 
leiam dados da entrada padrão e escrevam dados 
    na saída padrão. Geralmente o teclado e o 
                    terminal.



                                              8
Interligando programas
A comunicação dos programas é feita através do 
pipe, representado por |
cat /etc/fstab | grep sd




                                             9
Shell
●   O Shell é o prompt de comando do Linux
●   Ele  lê  o  que  o  usuário  digita,  interpreta  o 
    comando e o executa
●   Como  um  Command  do  MSDOS,  mas 
    melhorado




                                                      10
Shell Script
●   Chamamos  de  Shell  Script,  um  arquivo 
    contendo  comandos  do  terminal,  sob  a  forma 
    de um programa executável




                                                   11
Utilidade
●   Executar tarefas repetidas no Shell
●   Integração de tarefas complexas com cron
●   Operações com múltiplos arquivos e diretórios
●   Reaproveitamento do SEU tempo




                                                    12
Bash
O  bash  é  um  dos  possíveis  interpretadores 
disponíveis no prompt de comando.
Geralmente é o mais usado e é o shell padrão 
da maioria das distribuições Linux
Outras possibilidades: ksh, csh, etc




                                              13
Ok, ok, podemos começar?
                           14
Criando um shell script
●   Criar um arquivo de texto normal.
●   A primeira linha do arquivo deve ser:
     !#/bin/bash
    A linha acima diz que o interpretador é o bash
●   Salvar o arquivo
    chmod +x meu_primeiro_script.bash

                                                     15
Executando um shell script
●   Opção 1:
        ./meu_primeio_script.bash


●   Opção 2:
        bash meu_primeiro_script.bash




                                        16
Observação
●   A  extensão  é  opcional,  apenas  facilita  ao 
    usuário,  a  primeira  linha  do  arquivo  é  que  diz 
    quem vai interpretar o arquivo
●   Alguns usam a extensão .sh, mas geralmente é 
    um arquivo bash (verificar antes de executar!)




                                                         17
Atribuição de variáveis

●   Atribui valor a uma variável
    a=1
    Importante:  A  atribuição  não  pode  ter  espaços 
    nem  antes  nem  depois  da  igualdade,  senão  o 
    Bash acusa um erro


                                                      18
Atribuição de variáveis
●   Operações  matemáticas  podem  ser  feitas  com 
    let
    let a=a*3




                                                  19
Atribuição de variáveis
●   Se você precisar que a variável fique acessível 
    em processos filho do shell atual é preciso usar 
    export
    export OUTRO_SHELL=”ola shell”




                                                   20
Acessando variáveis
●   Com exceção do let, para acessar uma variável 
    devemos  adicionar  $  na  frente  do  nome  da 
    mesma.
    Ex:
    numero=10
    outro_numero=$numero


                                                  21
Mostrando dados na tela
●   Para  mostrar  dados  na  tela  existe  o  comando 
    echo
    Ex: echo “ola publico”
●   O mesmo com variáveis
●   Ex: echo $a



                                                     22
Variáveis dentro de strings
●   Para imprimir o valor de variáveis concatenado 
    com strings usados { e }
    Ex:
    str0=“string0”
    echo “minha string é ${str0}”
●   Mostra na tela “minha string é string0”

                                                 23
Leitura do teclado
    read var_resposta
●   O  valor  de  var_resposta  é  tudo  que  o  usuário 
    digitar, incluindo espaços




                                                       24
Testes
●   O comando test realiza … testes
●   Cada  operação  de  test  possui  um  parâmetro. 
    Por exemplo para testar se um arquivo existe o 
    parâmetro é “­f”
    Ex:
    test ­f arquivo.txt


                                                   25
Estruturas de seleção ­ if
Utilizado em conjunto com o comando test
Sintaxe
if COMANDO_TEST 
then
     A
else
     B
fi

                                           26
Estruturas de seleção ­ if
Ex:
if test $v1 ­gt $v2
then
  echo “V1 > V2”
else
  echo “V2 > V1”
fi
                                    27
Estruturas de seleção ­ case
case $var in
        1) 
               echo “Opção 1”
               ;;
        2) 
               echo “Opção 2”
               ;;
        *) 
               echo “Outras opções”
               ;;
esac
                                      28
Estruturas de repetição ­ while
while test ­d diretorio
do
       echo “Diretório não foi deletado ainda”
done




                                                 29
Estruturas de repetição ­ for
for numero in um dois tres
do
       echo $numero
done




                                     30
Programas interessantes


                          31
O comando mais importante




        man

                            32
awk
●   Linguagem  de  programação  para  manipulação 
    de strings
●   Ex:
    echo "1:2:3:4" | awk ­F : '{print $2}'
    Mostra  o  segundo  item  da  string,  ou  seja  “2”, 
    usando o separador “:”


                                                       33
sed
●   Substitui trechos de texto em arquivos
    sed s/OLD/NEW/ FILE
    sed   s/admin/master/   /etc/group




                                             34
grep
●   Filtra trechos de arquivos
    grep PADRAO ARQUIVO
    grep /etc/fstab /dev/sd




                                 35
uniq, sort, wc
●   uniq: Retira linhas contíquas repetidas
    uniq arquivo.txt
●   sort: Ordena um arquivo
    sort arquivo.txt
●   wc:  Conta  palavras,  linhas  e  caracteres  de  um 
    arquivo
    wc ­l arquivo.txt (mostra as linhas)
                                                       36
head, tail, less
●   Head: Mostra as primeiras linhas de um arquivo
    head arquivo.txt
●   Tail: Mostra as últimas linhas de um arquivo
    tail arquivo.txt
●   Less:  Mostra  o  conteúdo  de  um  arquivo  de 
    forma paginada
    less arquivo.txt
                                                   37
Mais comandos
●   http://wiki.ubuntu­br.org/ComandosBasicos         Comandos 
    básicos e alguns um pouco mais avançados
●   http://www.cyberciti.biz/tips/top­linux­monitoring­tools.htm 
    Para administradores de sistema




                                                                38
Referências
●   http://aurelio.net/shell/
●   http://www.delicious.com/vinicius_ah/shell 




                                                  39
TchêLinux Rio Grande
●   CIDEC­Sul – FURG – Campus Carreiros
●   27 de novembro de 2010
●   Call To Papers a partir de segunda




                                          40
Agradecimentos
●   Vocês
●   Organização  do  evento, 
    especialmente Jerônimo
●   Grupo Tchelinux
●   Patrocinadores
●   Comunidade        Software 
    Livre


                                  41
O poder é de vocês!




                      42
Contato
    E­mail / Twitter:
    viniciushax@gmail.com / @vinicius_ah
    Sites:
●   www.ti.c3.furg.br
●   www.zetaflops.com.br
●   www.tchelinux.org

                                           43

Introdução à Shellscript