ShellScript Cárlisson Galdino
ShellScriptCárlisson Galdino
O que é Shell
SHELL
Comandos
Kernel
História dos Shells Unix
● sh: Bourne Shell ou Standard Shell
● ksh: Korn Shell● csh: C Shell● bash: Bourne Again Shell
Bourne Again Shell
GNU Bash é um interpretador de linha de comando compatível com
sh, que executa comandos lidos a partir da entrada padrão ou de um arquivo. Bash também incorpora
recursos úteis do Korn Shell e do C Shell. Bash tenta estar em
conformidade com aimplementação da especificação
IEEE POSIX Shell and Tools (IEEE Working Group 1003.2).
Executando comandos
● Valor de retorno– Funcionou bem? Zero– 1: A maioria dos erros– 126: Não executável– 127: Não encontrado– 128+X: Morto com código X
● 130: Morto com código 2 (Ctrl+C)
– $?
● Foreground e Background
Entrada e Saída Padrão
● Entrada padrão: de onde vêm informações para o programa (interação)
● Saída padrão: para onde vão as informações que o programa quer gerar
● Default: teclado e monitor
Redirecionando de/para arquivo
Redirecionando entre comandos
● Linha de Montagem● ZIP X TAR.GZ
Empacotartar
Comprimirgz
Atalhos de teclado
● Tab ⇆ : Autocompletar
● CTRL+a : Início da linha
● CTRL+e : Fim da linha
● CTRL+p : Comando anterior
● CTRL+n : Próximo comando
● CTRL+l : Limpa a tela
● CTRL+u : Recorta a linha antes do cursor
● CTRL+k : Recorta a linha a partir do cursor
● CTRL+w : Recorta palavra
● CTRL+d : Exit
A Primeira Linha
● #!<PATH>● chmod u+x <arquivo>
Shell Script
● O que é um Script?● Como fazer um Shell Script?
Variáveis e Aliases
● VAR=”valor”● S iuapfsdif aufo $VAR
asdfuiop● alias com='/bin/blah blah'
Entre Aspas
● Aspas simples● Aspas duplas● Acentos graves
Bashrc, History e Profile
● /etc/profile● ~/.bash_profile● ~/.bash_login● ~/.profile● ~/.bashrc
Testes e Validações
● Os Colchetes● -lt, -gt, -le, -ge, -eq, -ne● =, !=, -n, -z● !, -a, -o● -d, -e, -f, -G, -L, -O, -r, -s, -w,
-x
Lidando com parâmetros
● $#, $* e $@● $1, $2, $3...
Estruturas de Decisão
If [ teste ]
then
comando
elif [ teste ]
then
comando
else
comando
fi
Estruturas de Repetição
for VAR in LISTA
do
...
done
while COMANDOdo ...done
case $VAR in txt1) ... ;; txt2) ... ;; txtN) ... ;; *) ... ;;esac
Função
NOMEDAFUNCAO() {
comandos
}
● $*, $1, $2...● return
Brinquedos Legais
● man – Páginas de manual● ImageMagick – Converte
imagens● lynx e links - browser● wget – fazendo download● ffmpeg – converte vídeo● Midnight Commander (mc)● bc – Calculadora
Diálogos com Dialog
dialog --title 'Escolha a data' \ --calendar '' 0 0 31 12 1999
Diálogos com Zenity
● zenity --calendar --title "Dia"
O que o zenity faz?
● --calendar calendário
● --entry entrada de texto
● --error mensagem de erro
● --info mostrar informações
● --file-selection seleção de arquivo
● --list lista de opções
● --notification ícone na bandeja
● --progress indicador de progresso
● --question pergunta
● --warning mensagem de alerta
● --text-info texto informativo
● zzajuda
● zzalfabeto
● zzanatel
● zzansi2html
● zzarrumanome
● zzascii
● zzbeep
● zzblist
● zzbrasileirao
● zzbrasileiraob
● zzbyte
● zzcalcula
ZZ - http://funcoeszz.net
● zzcalculaip
● zzcarnaval
● zzchavepgp
● zzcinclude
● zzcinemais
● zzcnpj
● zzconjuga
● zzcontapalavra
● zzconverte
● zzcores
● zzcpf
● zzdata
● zzdicjargon
● zzdicportugues
● zzdictodos
● zzdiffpalavra
● zzdolar
● zzdominiopais
● zzdos2unix
● zzecho
● zzenglish
● zzeuro
● zzfilme
● ETC...
● zzdefine
● zzdefinr
● zzdelicious
● zzdetranes
● zzdetransp
● zzdiadasemana
● zzdicasl
● zzdicbabelfish
● zzdicbabylon
● zzdicesperanto
● zzdicgoogle
● zzdicgoogle2
Outros Softwares
● Servidor HTTP
– http://lrp2.steinkuehler.net/Packages/weblet.htm
● Ferramenta para publicar em blog
– http://donshuff.tripod.com/dblog/
● Gerador de apresentações (slides) em HTML
– http://fx.lebail.free.fr/slides.sh/
● Diário Local
– http://cyaneus.net/selene
● Renomear MP3 com base no ID3
– http://rename-mp3.sourceforge.net/
Navegador de Arquivos
#!/bin/bashpergunta=0while [ $pergunta -eq 0 ]do
l=`ls $1`local=`zenity --list --column col $l`if [ -d "$local" ]then
zenity --info --text "$local é um diretório"else
zenity --info --text "$local é um arquivo"fizenity --questionpergunta=$?
done
Pesquise na Net
● Aurélio Verde
– http://aurelio.net/shell/
● Júlio Neves
– http://wiki.softwarelivre.org/TWikiBar/BatePapos
● Outras Fontes
– http://www.devin.com.br/shell_script/
– http://www.dicas-l.com.br/cantinhodoshell/
– http://www.inf.ufpr.br/afms03/shell.html
● Cárlisson Galdino
– http://bardo.cyaneus.net
– http://cyaneus.net