Introdução ao 
Shell Script 
(versão estendida) 
Hugo Maia Vieira 
@hugomaiavieira 
novembro de 2014 Esta obra é licenciad...
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 ...
Variáveis 
$ VARIAVEL='bla bla bla' 
$ echo $VARIAVEL 
bla bla bla 
+ Não pode haver espaços ao redor do igual 
+ O comand...
Expressões aritméticas 
+ A construção utilizada para indicar uma expressão aritmética 
É $((...)). Sim, com 2 parênteses!...
O comando test 
$ test EXPRESSÃO 
$ test [[ EXPRESSÃO ]] 
$ man test 
$ test "a" = "a" && echo "é igual!" 
é igual 
$ echo...
if COMANDO 
then 
comandos 
elif COMANDO 
then 
comandos 
else 
comandos 
fi 
if 
+ O if testa um comando e não uma condiç...
for 
for VARIAVEL in LISTA 
do 
comandos 
done 
+ O for percorre uma lista, pegando um elemento a cada iteração. 
echo 'Se...
for 
+ Um comando muito útil para usar com o for é o seq, que 
gera uma sequência numérica. 
for numero in $(seq 5) 
+ Out...
while 
while COMANDO 
do 
comandos 
done 
numero=0 
while test $numero -le 10 
do 
numero=$((numero+1)) 
echo "Contando: $...
case 
case VARIAVEL in 
caso1) comando; comando;; 
caso2) comando; comando;; 
*) comando;; 
esac 
case "$1" in 
-h | --hel...
funções 
nome_funcao () { 
comandos 
} 
function nome_funcao { 
comandos 
} 
pedir_nome () { 
echo -n "Digite seu nome: " ...
Opções de linha de comando 
+ Variáveis especiais e parâmetros posicionais 
$0 → Nome do script 
$1-$n → Parâmetros passad...
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 mob...
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 
CO...
Exemplo 
_nome() { 
local current=${COMP_WORDS[COMP_CWORD]} 
COMPREPLY=( $(compgen -W 'mario maria ana mariana' $current) ...
Referências 
http://www.novatec.com.br/livros/shellscript/ 
Shell Script Professinal – Aurélio Marinho Jargas 
http://www....
Próximos SlideShares
Carregando em…5
×

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

465 visualizações

Publicada em

O shell é o prompt da linha de comando do Unix e do Linux, que recebe e executa comandos digitados pelo usuário. Na linha de comando, podemos utilizar diversos comandos um após o outro. Se colocarmos diversas linhas de comandos em um arquivo texto, teremos um script em shell ou, um Shell Script. Além de comandos, um Shell Script pode conter todas as estruturas de uma linguagem de programação, como if, for, while, variáveis e funções.

Nesse minicurso veremos como automatizar tarefas usando Shell Script e conheceremos um pouco mais sobre alguns dos comandos mais úteis para serem utilizados tanto nos scripts quanto diretamente pela linha de comando. Além disso, veremos como customizar a inicialização do seu shell, como utilizar variáveis ambiente, criar seus próprios comandos e como criar um autocompletar para seus eles.

Publicada em: Software
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

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

Nenhuma nota no slide

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

  1. 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. 2. O que é Shell Script? O que é shell? O que é script? scripts em shell == Shell Scritp ==
  3. 3. O Shell, terminal, prompt, linha de comando
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 15. Vamos ao primeiro exemplo! listando usuários https://github.com/hugomaiavieira/shellscript-scti2014
  16. 16. .bashrc
  17. 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. 18. Variáveis de ambiente $PATH $PS1 $QQ_COISA
  19. 19. Vamos ao segundo exemplo! oh my gems! https://github.com/hugomaiavieira/shellscript-scti2014
  20. 20. autocompletar compgen e complete
  21. 21. compgem + Lista de possíveis “completadas” compgen -W 'pedro mario maria joão mariana' mari
  22. 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. 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. 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

×