Shell Script Daniel Carneiro
Atalhos de teclado <ul><li>CTRL-C -> Cancela execução
CTRL-Z -> Suspende Execução
CTRL-L -> Limpa a tela
CTRL-U -> Limpa a linha
CTRL-S -> Congela a tela
CTRL-Q -> Libera a tela
CTRL-D -> Fim de arquivo / logout / exit </li></ul>
Encadeamentos <ul><li>Utilize “;” para executar comandos sequencialmente. Ex: </li><ul><li>cp /home/daniel/x . ;  rm /home...
processo_longo2  & </li></ul><li>Combinando: </li><ul><li>proc1  &  proc2  ;  proc3  &  proc4 </li></ul></ul>
Pipes & Redirects Programas de console possuem 3 streams: <ul><ul><li>stdin -> entrada padrão
stdout -> saída padrão
stderr -> saída de erro </li></ul></ul>Estes streams podem ser concatenados e/ou redirecionados.
Pipes & Redirects Os streams dos programas podem ser concatenados por pipes (  |  ) <ul><ul><li>ls  |  sort  ->   “conecta...
ls > lista.txt; grep xyz < lista.txt
tar -cv .  |  gzip -c  >  teste.tar.gz </li></ul></ul>
Próximos SlideShares
Carregando em…5
×

Shell Scripting

1.237 visualizações

Publicada em

Primeira parte da apresentação sobre Shell Scripting realizada na Bluesoft.

Confira o video em http://www.vimeo.com/15391655

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.237
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • tar -&gt; -v = stderr
  • Muitos arquivos -&gt; excesso de parametros
  • Expressões podem ser aninhadas
  • Enfase em command substitution
  • Shell Scripting

    1. 1. Shell Script Daniel Carneiro
    2. 2. Atalhos de teclado <ul><li>CTRL-C -> Cancela execução
    3. 3. CTRL-Z -> Suspende Execução
    4. 4. CTRL-L -> Limpa a tela
    5. 5. CTRL-U -> Limpa a linha
    6. 6. CTRL-S -> Congela a tela
    7. 7. CTRL-Q -> Libera a tela
    8. 8. CTRL-D -> Fim de arquivo / logout / exit </li></ul>
    9. 9. Encadeamentos <ul><li>Utilize “;” para executar comandos sequencialmente. Ex: </li><ul><li>cp /home/daniel/x . ; rm /home/daniel/x </li></ul><li>Utilize “&” para executar um comando em background. Ex: </li><ul><li>processo_longo & processo_curto
    10. 10. processo_longo2 & </li></ul><li>Combinando: </li><ul><li>proc1 & proc2 ; proc3 & proc4 </li></ul></ul>
    11. 11. Pipes & Redirects Programas de console possuem 3 streams: <ul><ul><li>stdin -> entrada padrão
    12. 12. stdout -> saída padrão
    13. 13. stderr -> saída de erro </li></ul></ul>Estes streams podem ser concatenados e/ou redirecionados.
    14. 14. Pipes & Redirects Os streams dos programas podem ser concatenados por pipes ( | ) <ul><ul><li>ls | sort -> “conecta” stdout do ls ao stdin do sort </li></ul></ul><ul><ul><li>ls | grep xyz
    15. 15. ls > lista.txt; grep xyz < lista.txt
    16. 16. tar -cv . | gzip -c > teste.tar.gz </li></ul></ul>
    17. 17. Pipes & Redirects Redirecionamentos de arquivos podem ser de: <ul><ul><li>stdin -> usando “<”
    18. 18. stdout -> usando “>”
    19. 19. stderr -> usando “2>” </li></ul><li>Ex: </li></ul><ul><ul><li>tar -cv . 2> lista.txt | gzip -c > teste.tgz
    20. 20. cat < arqin.txt > arqout.txt
    21. 21. cat < arquivo.txt | grep xyz | sort > srt.txt </li></ul></ul>
    22. 22. Pipes & Redirects <ul><ul><li>Obs.: pode ser utilizado o “>>” para adicionar o conteúdo a um arquivo ao invés de substituí-lo. Ex.: </li></ul></ul>ls > lista.txt echo “Final da lista” >> lista.txt
    23. 23. Variáveis (Paramêtros) <ul><ul><li>Variaveis são definidas por nome=valor . </li></ul></ul><ul><ul><ul><li>Obs.: Não usar espaços
    24. 24. Bash define quase 100 parametros de funcionamento. </li></ul></ul></ul><ul><ul><li>Parametros são locais ou seja, não podem ser acessados por sub-shell ou processos filhos. </li><ul><li>Parametros exportados podem ser acessados pelos processos filhos. Ex.: export var1 </li></ul></ul></ul>
    25. 25. Arrays <ul><ul><li>Parametros podem ser indexados, se tornando arrays. Ex.: </li><ul><li>X[0]=teste; echo ${X[0]}
    26. 26. X=(a b c) </li></ul><li>Hashes são criados usando a expressão “declare -A” </li></ul></ul>
    27. 27. Expansions <ul><li>Os parâmetros em linha de comando são expandidos antes da execução. Ex:
    28. 28. Em um diretório com 2 arquivos: a.txt e b.txt, ao digitar:
    29. 29. rm *.txt
    30. 30. Irá expandir para:
    31. 31. rm a.txt b.txt </li></ul>
    32. 32. Expansions <ul><li>Brace Expansion </li><ul><li>a{d,c,b}e -> ade ace abe
    33. 33. /mnt/home/*.{java,class} -> /mnt/home/*.java /mnt/home/*.class </li></ul><li>Tilde Expansion </li><ul><li>~ -> home do usuário
    34. 34. ~daniel -> home do daniel
    35. 35. ~+ -> diretório atual
    36. 36. ~- -> diretório anterior </li></ul></ul>
    37. 37. Expansions <ul><ul><li>Parameter expansion </li></ul></ul><ul><ul><ul><li>$param ou ${param} </li><ul><li>Retorna param </li></ul><li>${param:-word} e ${param:+word} </li><ul><li>Retorna word se param não existir (-). Lógica inversa (+).
    38. 38. Ex: x=1;y=2;echo ${z:-$y} -> Retorna “2” </li></ul><li>${param:?word} </li><ul><li>Exibe mensagem de erro. Ex.: ${x:nao existe} </li></ul><li>${param:offset} ou ${param:offset:length} </li><ul><li>Subtring </li></ul><li>${#param} </li><ul><li>Param length </li></ul></ul></ul></ul>
    39. 39. Expansions <ul><ul><ul><li>${param#word} e ${param##word} </li><ul><li>Remove o inicio do valor. Ex.: ${PATH#*/bin} </li></ul><li>${param%word} e ${param%%word} </li><ul><li>Remove o final do valor. </li></ul><li>${param/pattern/string} </li><ul><li>Substituição. Pattern pode ser complexo (não regex) </li></ul><li>${param^^} e ${param,,} </li><ul><li>Uppercase e lowercase. Aceita pattern. </li></ul></ul></ul></ul>
    40. 40. Expansions <ul><ul><li>Arrays expansion </li><ul><li>${param[idx]} </li><ul><li>Item de um array </li></ul><li>${param[@]} </li><ul><li>Todos os itens do array </li></ul><li>${#param[idx]} </li><ul><li>Length de um item </li></ul><li>${#param[@]} </li><ul><li>Length do array </li></ul></ul></ul></ul>
    41. 41. Expansions <ul><ul><li>Arithmetic expansions </li></ul></ul><ul><ul><ul><li>$((x+1/2)) </li></ul></ul></ul><ul><ul><ul><ul><li>Obs: Operações apenas com inteiros </li></ul></ul><li>Command Substitution </li></ul></ul><ul><ul><ul><li>$(ls) ou `ls` </li></ul><li>Pathname expansion </li><ul><li>Executado após as outras substituições. Usa * e ?. Ex.: </li><ul><li>x=”*.sql”; echo $x -> Exibe os arquivo terminados em .sql, se existir, caso contrário exibe “*.sql” </li></ul></ul></ul></ul>
    42. 42. Obrigado

    ×