SlideShare uma empresa Scribd logo
Introdução ao 
Shell Script 
(versão estendida) 
Hugo Maia Vieira 
@hugomaiavieira 
novembro de 2014 Esta obra é licenciada sob uma licença 
Creative Commons
O que é Shell Script? 
O que é shell? 
O que é script? 
scripts em shell == Shell Scritp ==
O Shell, terminal, prompt, 
linha de comando
Scripts executáveis (Unix) 
chmod +x arquivo 
Localização do interpretador: hashbang¹ (#!) 
#!/bin/sh 
ou 
#!/usr/bin/env sh 
¹ http://en.wikipedia.org/wiki/Shebang_(Unix)
Variáveis 
$ VARIAVEL='bla bla bla' 
$ echo $VARIAVEL 
bla bla bla 
+ Não pode haver espaços ao redor do igual 
+ O comando local variáveis locais 
+ O comando unset elimina a variável 
+ É possível armazenar a saída de um comando usando o $(...): 
$ DATA=$(date +%x) 
$ echo $DATA 
09-11-2011
Expressões aritméticas 
+ A construção utilizada para indicar uma expressão aritmética 
É $((...)). Sim, com 2 parênteses! 
$ echo $((5*8)) 
40 
$ SOMA=$((2+5+1)) 
$ echo $SOMA 
8 
$ RESPOTA=$((SOMA*2)) 
$ echo $RESPOSTA 
16
O comando test 
$ test EXPRESSÃO 
$ test [[ EXPRESSÃO ]] 
$ man test 
$ test "a" = "a" && echo "é igual!" 
é igual 
$ echo $? 
0 
$ [[ "a" = "b" ]] && echo "é igual!" 
$ echo $? 
1 
+ Para a sintaxe usando colchetes, deve ter um espaço 
entre a expressão e os colchetes.
if COMANDO 
then 
comandos 
elif COMANDO 
then 
comandos 
else 
comandos 
fi 
if 
+ O if testa um comando e não uma condição. Porém, 
existe o comando test que testa condições. 
if [[ "a" -gt 25 ]]; then 
echo "é maior que 25" 
else 
echo "é menor que 25" 
fi 
+ Fique ligado: o if é fechado com o fi, ou seja, if invertido.
for 
for VARIAVEL in LISTA 
do 
comandos 
done 
+ O for percorre uma lista, pegando um elemento a cada iteração. 
echo 'Seu computador irá explodir em 5 segundos' 
for numero in cinco quatro três dois um 
do 
echo "$numero" 
sleep 1 
done 
echo "BUUMMMM!!!"
for 
+ Um comando muito útil para usar com o for é o seq, que 
gera uma sequência numérica. 
for numero in $(seq 5) 
+ Outro comando muito útil para usar com o for é o cat: 
contador=0 
for pais in $(cat dados.txt) 
do 
contador=$((contador+1)) 
echo "$contador: $pais" 
done
while 
while COMANDO 
do 
comandos 
done 
numero=0 
while test $numero -le 10 
do 
numero=$((numero+1)) 
echo "Contando: $numero" 
done 
+ Existem também o until, que têm as mesmas características do 
while. a única diferença é que ele faz o contrário.
case 
case VARIAVEL in 
caso1) comando; comando;; 
caso2) comando; comando;; 
*) comando;; 
esac 
case "$1" in 
-h | --help) echo "$MENSAGEM_DE_USO" ;; 
-V | --version) echo "1.0" ;; 
*) echo "Opção inválida: $1" ;; 
esac 
+ Fique ligado: o case é fechado com o esac, ou seja, 
case invertido.
funções 
nome_funcao () { 
comandos 
} 
function nome_funcao { 
comandos 
} 
pedir_nome () { 
echo -n "Digite seu nome: " 
read NOME 
} 
pedir_nome 
echo "Olá $NOME!"
Opções de linha de comando 
+ Variáveis especiais e parâmetros posicionais 
$0 → Nome do script 
$1-$n → Parâmetros passados à linha de comando 
$# → Número de parâmetros passados 
$* → Lista de parâmetros passados 
cut -d : -f 2 /etc/passwd 
# $0 = cut 
# $1 = -d 
# $2 = : 
# $3 = -f 
# $4 = 2 
# $5 = /etc/passwd 
# $# = 5 
# $* = -d : -f 2 /etc/passwd
Vamos ao primeiro exemplo! 
listando usuários 
https://github.com/hugomaiavieira/shellscript-scti2014
.bashrc
Alias (apelidos) 
alias ss="spring rspec" 
alias ll="ls -lah" 
alias ..='cd ..' 
# google chrome for mobile dev 
alias mobile_chrome="google-chrome  
--allow-file-access-from-files  
--disable-web-security  
--user-data-dir=$HOME/.google-chrome/mobile_dev"
Variáveis de ambiente 
$PATH 
$PS1 
$QQ_COISA
Vamos ao segundo exemplo! 
oh my gems! 
https://github.com/hugomaiavieira/shellscript-scti2014
autocompletar 
compgen e complete
compgem 
+ Lista de possíveis “completadas” 
compgen -W 'pedro mario maria joão mariana' mari
complete 
+ Disponibiliza e usa suas variáveis para funções de autocompletar 
COMP_LINE 
a linha de comando no momento 
COMP_WORDS 
lista de argumentos passados para o comando no momento 
COMP_CWORD 
o índice do argumento onde o cursor está no momento 
COMP_WORDBREAKS 
lista de caracteres separadores de palavras 
COMPREPLY 
um array contendo as possíveis “completadas”
Exemplo 
_nome() { 
local current=${COMP_WORDS[COMP_CWORD]} 
COMPREPLY=( $(compgen -W 'mario maria ana mariana' $current) ) 
} 
complete -F _nome nome 
Estamos dizendo ao comando complete que utilize a função _nome 
para modificar a variável COMPREPLY com as possíveis “completadas” 
para o comando nome 
current=${COMP_WORDS[COMP_CWORD]} 
Se estivermos digitando “nome mari” e apartarmos [TAB][TAB], 
o valor de current será “mari”
Referências 
http://www.novatec.com.br/livros/shellscript/ 
Shell Script Professinal – Aurélio Marinho Jargas 
http://www.tldp.org/LDP/abs/html/abs-guide.html 
Advanced Bash-Scripting Guide 
http://en.wikipedia.org/wiki/Shebang_(Unix) 
Sobre o hashbang 
http://goo.gl/INt07D 
Autocompletar no Bash

Mais conteúdo relacionado

Mais procurados

Soa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shellSoa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shell
portal_Do_estudante
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
brunobione
 
Curso shell
Curso shellCurso shell
Curso shell
cesarvianna
 
Shell Script
Shell ScriptShell Script
Shell Script
Wellington Oliveira
 
Shell Script v0
Shell Script v0Shell Script v0
Shell Script v0
PeslPinguim
 
Agenda em bash e dialog
Agenda em bash e dialogAgenda em bash e dialog
Agenda em bash e dialog
Marcelo Barros de Almeida
 
Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017
Sandro Custodio
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
Reinaldo Lima
 
Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2
Wanderlei Silva do Carmo
 
Shell script i
Shell script iShell script i
Shell script i
Carlos Melo
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
Sérgio Silva
 
Stack based overflow
Stack based overflowStack based overflow
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
Armando Reis
 
Scatole Nere
Scatole NereScatole Nere
Scatole Nere
Stefano Rodighiero
 
Al sweigart, cap 3
Al sweigart, cap 3Al sweigart, cap 3
Shell script
Shell scriptShell script
Shell script
Carlos Melo
 
shell bash Fpar aula6
shell bash Fpar aula6shell bash Fpar aula6
shell bash Fpar aula6
Geomar Matias Lima
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
Rafael Jaques
 
Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7
Pessoal
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
W3P Projetos Web
 

Mais procurados (20)

Soa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shellSoa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shell
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
 
Curso shell
Curso shellCurso shell
Curso shell
 
Shell Script
Shell ScriptShell Script
Shell Script
 
Shell Script v0
Shell Script v0Shell Script v0
Shell Script v0
 
Agenda em bash e dialog
Agenda em bash e dialogAgenda em bash e dialog
Agenda em bash e dialog
 
Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017Bash, o poder da linha de comando! - Tchelinux.org 2017
Bash, o poder da linha de comando! - Tchelinux.org 2017
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
 
Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2
 
Shell script i
Shell script iShell script i
Shell script i
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
 
Stack based overflow
Stack based overflowStack based overflow
Stack based overflow
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
 
Scatole Nere
Scatole NereScatole Nere
Scatole Nere
 
Al sweigart, cap 3
Al sweigart, cap 3Al sweigart, cap 3
Al sweigart, cap 3
 
Shell script
Shell scriptShell script
Shell script
 
shell bash Fpar aula6
shell bash Fpar aula6shell bash Fpar aula6
shell bash Fpar aula6
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
 
Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
 

Destaque

Livro Programação em Shell 8 edição Julio Cézar Nevez
Livro Programação em Shell 8 edição   Julio Cézar NevezLivro Programação em Shell 8 edição   Julio Cézar Nevez
Livro Programação em Shell 8 edição Julio Cézar Nevez
SoftD Abreu
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à Shellscript
Vinícius Hax
 
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em português
David de Assis
 
Curso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal RootCurso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal Root
Marcos Quinho
 
Redes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Redes e Servidores Linux - Guia Prático - Carlos E. MorimotoRedes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Redes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Heber Gutenberg
 
Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71
Guilherme Dias
 
Manual linux completo
Manual linux completoManual linux completo
Manual linux completo
Jeanfson Dutra
 
Shell Script - Luz e trevas
Shell Script - Luz e trevasShell Script - Luz e trevas
Shell Script - Luz e trevas
Osvaldo Filho
 
Curso programação web em PHP
Curso programação web em PHPCurso programação web em PHP
Curso programação web em PHP
Raphael Cangucu
 
Exemplos Aula2
Exemplos Aula2Exemplos Aula2
Exemplos Aula2softeam
 
Acessardados Aula7
Acessardados Aula7Acessardados Aula7
Acessardados Aula7softeam
 
Exemplos Aula4
Exemplos Aula4Exemplos Aula4
Exemplos Aula4
softeam
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
softeam
 
Códigos da Aula3
Códigos da Aula3Códigos da Aula3
Códigos da Aula3softeam
 
SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...
SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...
SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...
Rogério Fernandes da Costa
 
Aula 1 estruturas de controlo (final)
Aula 1   estruturas de controlo (final)Aula 1   estruturas de controlo (final)
Aula 1 estruturas de controlo (final)
mestradopeci2012
 
Aula 01 - Programação Web - PHP
Aula 01  - Programação Web - PHPAula 01  - Programação Web - PHP
Aula 01 - Programação Web - PHP
Dalton Martins
 
Engenharia de Usabilidade
Engenharia de UsabilidadeEngenharia de Usabilidade
Engenharia de Usabilidade
Rogério Fernandes da Costa
 
Estrutura de controle if else
Estrutura de controle if elseEstrutura de controle if else
Estrutura de controle if else
Ramires Nascimento
 
Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11
Renan Boccia
 

Destaque (20)

Livro Programação em Shell 8 edição Julio Cézar Nevez
Livro Programação em Shell 8 edição   Julio Cézar NevezLivro Programação em Shell 8 edição   Julio Cézar Nevez
Livro Programação em Shell 8 edição Julio Cézar Nevez
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à Shellscript
 
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em português
 
Curso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal RootCurso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal Root
 
Redes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Redes e Servidores Linux - Guia Prático - Carlos E. MorimotoRedes e Servidores Linux - Guia Prático - Carlos E. Morimoto
Redes e Servidores Linux - Guia Prático - Carlos E. Morimoto
 
Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71Livro proibido do curso de hacker completo 285 páginas 71
Livro proibido do curso de hacker completo 285 páginas 71
 
Manual linux completo
Manual linux completoManual linux completo
Manual linux completo
 
Shell Script - Luz e trevas
Shell Script - Luz e trevasShell Script - Luz e trevas
Shell Script - Luz e trevas
 
Curso programação web em PHP
Curso programação web em PHPCurso programação web em PHP
Curso programação web em PHP
 
Exemplos Aula2
Exemplos Aula2Exemplos Aula2
Exemplos Aula2
 
Acessardados Aula7
Acessardados Aula7Acessardados Aula7
Acessardados Aula7
 
Exemplos Aula4
Exemplos Aula4Exemplos Aula4
Exemplos Aula4
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
 
Códigos da Aula3
Códigos da Aula3Códigos da Aula3
Códigos da Aula3
 
SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...
SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...
SOCIAL RESPONSIBILITY AND SUSTAINABILITY: A STUDY ON THE PROJECT MANAGEMENT A...
 
Aula 1 estruturas de controlo (final)
Aula 1   estruturas de controlo (final)Aula 1   estruturas de controlo (final)
Aula 1 estruturas de controlo (final)
 
Aula 01 - Programação Web - PHP
Aula 01  - Programação Web - PHPAula 01  - Programação Web - PHP
Aula 01 - Programação Web - PHP
 
Engenharia de Usabilidade
Engenharia de UsabilidadeEngenharia de Usabilidade
Engenharia de Usabilidade
 
Estrutura de controle if else
Estrutura de controle if elseEstrutura de controle if else
Estrutura de controle if else
 
Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11
 

Semelhante a Introdução ao Shell Script (versão estendida)

Linux shell
Linux shellLinux shell
Linux shell
Frederico Madeira
 
Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5
Pessoal
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
Lucas Batistussi
 
Curso de ShellScript - Lm06 shellscript6
Curso de ShellScript - Lm06 shellscript6Curso de ShellScript - Lm06 shellscript6
Curso de ShellScript - Lm06 shellscript6
Pessoal
 
Introdução ao shell script no linux
Introdução ao shell script no linuxIntrodução ao shell script no linux
Introdução ao shell script no linux
Paulo Damas
 
Shell scripts
Shell scriptsShell scripts
Shell scripts
Joelson Vidal
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bash
Sérgio Silva
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxo
Frederico Madeira
 
Automatizando tarefas com bash script
Automatizando tarefas com bash scriptAutomatizando tarefas com bash script
Automatizando tarefas com bash script
Rennan Cockles
 
Shell Tips and Tricks for sysadmin
Shell Tips and Tricks for sysadminShell Tips and Tricks for sysadmin
Shell Tips and Tricks for sysadmin
Magno Torres
 
Guia com mais de 500 comandos do linux explicados computeiro da depressão
Guia com mais de 500 comandos do linux explicados   computeiro da depressãoGuia com mais de 500 comandos do linux explicados   computeiro da depressão
Guia com mais de 500 comandos do linux explicados computeiro da depressão
Jesser Martins Medeiros
 
Manual comandos
Manual comandosManual comandos
Manual comandos
Paulo Rijo
 
Oficina shell
Oficina shellOficina shell
Oficina shell
apsegundo
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2
Leo Amorim
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2
Leo Amorim
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
Geomar Matias Lima
 
Shell script do zero aula 1 - basico do basico e primeiros comandos
Shell script do zero    aula 1 - basico do basico e primeiros comandosShell script do zero    aula 1 - basico do basico e primeiros comandos
Shell script do zero aula 1 - basico do basico e primeiros comandos
Ivan Ribeiro
 
Curso de ShellScript - Lm10 shellscript10
Curso de ShellScript - Lm10 shellscript10Curso de ShellScript - Lm10 shellscript10
Curso de ShellScript - Lm10 shellscript10
Pessoal
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
Tiago
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
Tiago
 

Semelhante a Introdução ao Shell Script (versão estendida) (20)

Linux shell
Linux shellLinux shell
Linux shell
 
Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Curso de ShellScript - Lm06 shellscript6
Curso de ShellScript - Lm06 shellscript6Curso de ShellScript - Lm06 shellscript6
Curso de ShellScript - Lm06 shellscript6
 
Introdução ao shell script no linux
Introdução ao shell script no linuxIntrodução ao shell script no linux
Introdução ao shell script no linux
 
Shell scripts
Shell scriptsShell scripts
Shell scripts
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bash
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxo
 
Automatizando tarefas com bash script
Automatizando tarefas com bash scriptAutomatizando tarefas com bash script
Automatizando tarefas com bash script
 
Shell Tips and Tricks for sysadmin
Shell Tips and Tricks for sysadminShell Tips and Tricks for sysadmin
Shell Tips and Tricks for sysadmin
 
Guia com mais de 500 comandos do linux explicados computeiro da depressão
Guia com mais de 500 comandos do linux explicados   computeiro da depressãoGuia com mais de 500 comandos do linux explicados   computeiro da depressão
Guia com mais de 500 comandos do linux explicados computeiro da depressão
 
Manual comandos
Manual comandosManual comandos
Manual comandos
 
Oficina shell
Oficina shellOficina shell
Oficina shell
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
 
Shell script do zero aula 1 - basico do basico e primeiros comandos
Shell script do zero    aula 1 - basico do basico e primeiros comandosShell script do zero    aula 1 - basico do basico e primeiros comandos
Shell script do zero aula 1 - basico do basico e primeiros comandos
 
Curso de ShellScript - Lm10 shellscript10
Curso de ShellScript - Lm10 shellscript10Curso de ShellScript - Lm10 shellscript10
Curso de ShellScript - Lm10 shellscript10
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 

Introdução ao Shell Script (versão estendida)

  • 1. Introdução ao Shell Script (versão estendida) Hugo Maia Vieira @hugomaiavieira novembro de 2014 Esta obra é licenciada sob uma licença Creative Commons
  • 2. O que é Shell Script? O que é shell? O que é script? scripts em shell == Shell Scritp ==
  • 3. O Shell, terminal, prompt, linha de comando
  • 4. Scripts executáveis (Unix) chmod +x arquivo Localização do interpretador: hashbang¹ (#!) #!/bin/sh ou #!/usr/bin/env sh ¹ http://en.wikipedia.org/wiki/Shebang_(Unix)
  • 5. Variáveis $ VARIAVEL='bla bla bla' $ echo $VARIAVEL bla bla bla + Não pode haver espaços ao redor do igual + O comando local variáveis locais + O comando unset elimina a variável + É possível armazenar a saída de um comando usando o $(...): $ DATA=$(date +%x) $ echo $DATA 09-11-2011
  • 6. Expressões aritméticas + A construção utilizada para indicar uma expressão aritmética É $((...)). Sim, com 2 parênteses! $ echo $((5*8)) 40 $ SOMA=$((2+5+1)) $ echo $SOMA 8 $ RESPOTA=$((SOMA*2)) $ echo $RESPOSTA 16
  • 7. O comando test $ test EXPRESSÃO $ test [[ EXPRESSÃO ]] $ man test $ test "a" = "a" && echo "é igual!" é igual $ echo $? 0 $ [[ "a" = "b" ]] && echo "é igual!" $ echo $? 1 + Para a sintaxe usando colchetes, deve ter um espaço entre a expressão e os colchetes.
  • 8. if COMANDO then comandos elif COMANDO then comandos else comandos fi if + O if testa um comando e não uma condição. Porém, existe o comando test que testa condições. if [[ "a" -gt 25 ]]; then echo "é maior que 25" else echo "é menor que 25" fi + Fique ligado: o if é fechado com o fi, ou seja, if invertido.
  • 9. for for VARIAVEL in LISTA do comandos done + O for percorre uma lista, pegando um elemento a cada iteração. echo 'Seu computador irá explodir em 5 segundos' for numero in cinco quatro três dois um do echo "$numero" sleep 1 done echo "BUUMMMM!!!"
  • 10. for + Um comando muito útil para usar com o for é o seq, que gera uma sequência numérica. for numero in $(seq 5) + Outro comando muito útil para usar com o for é o cat: contador=0 for pais in $(cat dados.txt) do contador=$((contador+1)) echo "$contador: $pais" done
  • 11. while while COMANDO do comandos done numero=0 while test $numero -le 10 do numero=$((numero+1)) echo "Contando: $numero" done + Existem também o until, que têm as mesmas características do while. a única diferença é que ele faz o contrário.
  • 12. case case VARIAVEL in caso1) comando; comando;; caso2) comando; comando;; *) comando;; esac case "$1" in -h | --help) echo "$MENSAGEM_DE_USO" ;; -V | --version) echo "1.0" ;; *) echo "Opção inválida: $1" ;; esac + Fique ligado: o case é fechado com o esac, ou seja, case invertido.
  • 13. funções nome_funcao () { comandos } function nome_funcao { comandos } pedir_nome () { echo -n "Digite seu nome: " read NOME } pedir_nome echo "Olá $NOME!"
  • 14. Opções de linha de comando + Variáveis especiais e parâmetros posicionais $0 → Nome do script $1-$n → Parâmetros passados à linha de comando $# → Número de parâmetros passados $* → Lista de parâmetros passados cut -d : -f 2 /etc/passwd # $0 = cut # $1 = -d # $2 = : # $3 = -f # $4 = 2 # $5 = /etc/passwd # $# = 5 # $* = -d : -f 2 /etc/passwd
  • 15. Vamos ao primeiro exemplo! listando usuários https://github.com/hugomaiavieira/shellscript-scti2014
  • 17. Alias (apelidos) alias ss="spring rspec" alias ll="ls -lah" alias ..='cd ..' # google chrome for mobile dev alias mobile_chrome="google-chrome --allow-file-access-from-files --disable-web-security --user-data-dir=$HOME/.google-chrome/mobile_dev"
  • 18. Variáveis de ambiente $PATH $PS1 $QQ_COISA
  • 19. Vamos ao segundo exemplo! oh my gems! https://github.com/hugomaiavieira/shellscript-scti2014
  • 21. compgem + Lista de possíveis “completadas” compgen -W 'pedro mario maria joão mariana' mari
  • 22. complete + Disponibiliza e usa suas variáveis para funções de autocompletar COMP_LINE a linha de comando no momento COMP_WORDS lista de argumentos passados para o comando no momento COMP_CWORD o índice do argumento onde o cursor está no momento COMP_WORDBREAKS lista de caracteres separadores de palavras COMPREPLY um array contendo as possíveis “completadas”
  • 23. Exemplo _nome() { local current=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen -W 'mario maria ana mariana' $current) ) } complete -F _nome nome Estamos dizendo ao comando complete que utilize a função _nome para modificar a variável COMPREPLY com as possíveis “completadas” para o comando nome current=${COMP_WORDS[COMP_CWORD]} Se estivermos digitando “nome mari” e apartarmos [TAB][TAB], o valor de current será “mari”
  • 24. Referências http://www.novatec.com.br/livros/shellscript/ Shell Script Professinal – Aurélio Marinho Jargas http://www.tldp.org/LDP/abs/html/abs-guide.html Advanced Bash-Scripting Guide http://en.wikipedia.org/wiki/Shebang_(Unix) Sobre o hashbang http://goo.gl/INt07D Autocompletar no Bash