SlideShare a Scribd company logo
1 of 68
Download to read offline
Minicurso:Desenvolvendo aplicações em Shell Script com interface interativa 
Apresentadores: Igor Rafael da Rocha 
Luís Eduardo Tenório Silva
Apresentadores 
Igor Rafael da Rocha 
Luís Eduardo Tenório da Silva 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
2
Roteiro 
•Introdução 
•Shell Script 
▫Primeiro Programa 
▫SheBang! 
▫Comando echo 
▫Variáveis 
▫Comentários 
▫Parâmetros Posicionais 
▫Status de Términio 
▫Estrutura de condição 
▫Estrutura de repetição 
▫Funções 
▫Redirecionadores 
▫Arrays 
▫Pipes 
▫Processamento de texto 
▫Dicas 
•Dialog; 
▫Introdução 
▫Tipos de caixa 
▫ Funcionamento do dialog 
•Uso do Dialog; 
▫Exemplos 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
3
Roteiro 
•Introdução 
•Shell Script 
▫Primeiro Programa 
▫SheBang! 
▫Comando echo 
▫Variáveis 
▫Comentários 
▫Parâmetros Posicionais 
▫Status de Términio 
▫Estrutura de condição 
▫Estrutura de repetição 
▫Funções 
▫Redirecionadores 
▫Arrays 
▫Pipes 
▫Processamento de texto 
▫Dicas 
•Dialog; 
▫Introdução 
▫Tipos de caixa 
▫ Funcionamento do dialog 
•Uso do Dialog; 
▫Exemplos 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
4
Introdução 
O que é shell? 
•Programa que permite ao usuário interagir com o Sistema Operacional(SO) através de comandos digitados do teclado. 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
5
Introdução 
Tipos de shell 
•bash (Bourne Again Shell) 
•sh (Bourne Shell) 
•ksh (Korn Shell) 
•csh (C Shell) 
•zsh (Z shell) 
•Como saber o shell que estou utilizando? 
▫echo $SHELL 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
6
Introdução 
O que é shell script? 
“ Linguagem de script usada em vários sistemas operacionais, com diferentes dialetos, dependendo do interpretador de comandos utilizado(shell).” Wikipédia 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
7
Roteiro 
•Introdução 
•Shell Script 
▫Primeiro Programa 
▫SheBang! 
▫Comando echo 
▫Variáveis 
▫Comentários 
▫Parâmetros Posicionais 
▫Status de Términio 
▫Estrutura de condição 
▫Estrutura de repetição 
▫Funções 
▫Redirecionadores 
▫Arrays 
▫Pipes 
▫Processamento de texto 
▫Dicas 
•Dialog; 
▫Introdução 
▫Tipos de caixa 
▫ Funcionamento do dialog 
•Uso do Dialog; 
▫Exemplos 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
8
Shell Script 
Primeiro Programa 
#!/bin/bash 
echo -e “Hello World!” 
•Terminal: 
▫chmod +x hello.sh 
▫./hello.sh 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
9
Shell Script 
SheBang 
•Refere-se aos caracteres #!, quando os mesmos são os primeiros caracteres em um arquivo. Utilizado para identificar o tipo de interpretador que será utilizado no programa. 
•Ex: 
▫#!/bin/bash 
▫#!/bin/sh 
▫#!/bin/perl 
▫#!/bin/python 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
10
Shell Script 
Comando echo 
•Imprime texto na saída do shell 
• -e: interpreta caracteres de escape 
•Obs: 
▫“” –Interpreta variáveis (aspas duplas) 
▫„‟ – Não interpreta variáveis (aspas simples) 
▫`` - Interpreta comandos (crases) 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
11
Shell Script 
Variáveis 
•Definição 
▫NOME=valor 
•Acesso: 
▫$NOME 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
12
Shell Script 
Variáveis especiais 
•$0- Nome do script em execução 
•$1-$9- Parâmetros posicionais 
•${10} ...- Parâmetros posicionais 
•$#- Número de parâmetros passados 
•$$- PID 
•$?- Valor de retorno 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
13
Shell Script 
Tipos de Variáveis 
•Em shell-script as variáveis não são tipadas, mas podemos limitar a atribuição de tipos a variáveis com o comando declare 
•Sintaxe: 
▫declare <OPTION(S)> <VARIABLE>=<value> 
•Options: 
▫-a : Array 
▫-f : Função 
▫-i : Inteiro 
▫-r : Somente leitura (constante) 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
14
Shell Script 
Comando read 
•Recebe entrada do usuário e guarda em uma variável 
•Sintaxe 
▫read VARIABLE 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
15
Shell Script 
Comentários 
•Linhas que serão ignoradas pelo interpretador. Utilizado para descrever a lógica ou algum comando utilizado. 
•Sintaxe: 
▫# 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
16
Shell Script 
Parâmetros Posicionais 
•Argumentos que são passados na linha de comando quando invocado um script. 
•Sintaxe: 
▫$1...$9 
▫${10} …. 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
17
Shell Script 
Status de Término (exit) 
•Todo script ao ser executado retorna um valor que identifica o status do mesmo. Retorna um valor entre 0 e 255. 
•Sintaxe: 
▫exit <NUMBER> 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
18
Shell Script 
Status de Término (exit) 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
19 
Exit Code Number 
Significado 
0 
Script executado com sucesso 
1 
Erros Gerais 
2 
Uso indevíduo do shell 
126 
Comando não pode ser executado 
127 
Comando não encontrado 
128 
Argumento inválido para exit 
128 +n 
Erro Fatal +sinal “n” 
130 
Finalizado com Ctrl +c 
255* 
Fora do intervalo
Shell Script 
Estrutura de Condição 
•If...Else 
•If...Elif...Else 
•Case 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
20
Shell Script 
If...Else 
•Sintaxe: 
if [ OPTION(s) ];then 
CONDITION 
else 
CONDITION 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
21
Shell Script 
If...Elif...Else 
•Sintaxe: 
if [ OPTION(s) ];then 
CONDITION 
elif [ OPTION(s) ];then 
CONDITION 
else 
CONDITION 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
22
Shell Script 
Tabela de opções 
•Comparativos de números: 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
23 
Operação 
Significado 
$a -lt $b 
Menor que (less than) 
$a -le $b 
Menor ou igual (less or equal) 
$a -gt $b 
Maior que (greater than) 
$a -ge $b 
Maior ou igual (greater or equal) 
$a -eq $b 
Igual (equal)
Shell Script 
Tabela de opções 
•Comparativos de strings: 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
24 
Operação 
Significado 
[ -z STRING ] 
Verifica se string possui comprimento zero 
[ -n STRING] ou [ STRING ] 
Verifica se string não possui comprimento zero 
[ STRING1 == STRING2 ] 
Verifica se strings são iguais 
[ STRING1 != STRING2 ] 
Verifica se strings são diferentes 
[ STRING1 < STRING2 ] 
Verifica se STRING1 é menor que STRING2 
[ STRING1 > STRING2 ] 
Verifica se STRING1 é maior que STRING2
Shell Script 
Tabela de opções 
•Expressões: 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
25 
Operação 
Significado 
[ !EXPR ] 
Negação do valor da expressão ( verdade se EXPR falso) 
[ (EXPR) ] 
Precedência 
[ EXPR1 -a EXPR2 ] ou [ EXPR1 && EXPR2 ] 
Tabela and 
[ EXPR1 -o EXPR2 ] ou [ EXPR1 || EXPR2 ] 
Tabela or
Shell Script 
Tabela de opções 
•Operações com arquivos : 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
26 
Operação 
Significado 
[ -e ARQ ] 
Verdadeiro se ARQ existe. 
[ -d ARQ ] 
Verdadeiro se ARQ existe e se é diretório. 
[ -r ARQ ] 
Verdadeiro se ARQ existe e se é legível. 
[ -w ARQ ] 
Verdadeiro se ARQ existe e se tem permissão de escrita. 
[ -x ARQ ] 
Verdadeiro se ARQ existe e se é executável 
[ -z ARQ ] 
Verdadeiro se ARQ estiver vazio
Shell Script 
Case 
•Sintaxe: 
case "$variable" in "$condition1" ) command... ;; "$condition2" ) command... ;; *) command... ;; esac 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
27
Shell Script 
Estrutura de Repetição 
•For 
•While 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
28
Shell Script 
For 
•Sintaxe: 
for (( c=1; c<=5; c++ )); do 
command 
done 
•Sintaxe 2 
for VARIABLE in VALUE_LIST; do 
command 
done 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
29
Shell Script 
For 
•Sintaxe: 
while [ condition ];do command(s)... 
done 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
30
Shell Script 
Funções 
•Sub-rotinas (bloco de código) que implementa um conjunto de operações e executa uma tarefa específica. 
•Sintaxe: 
function_name () { command... 
} 
•Chamada: 
function_name 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
31
Shell Script 
Funções 
•Devem ser declaradas antes de suas chamadas 
•Não podem estarem vazias 
•Podem ser criadas dentro de outras funções (embora inútil) 
•Podem ser declaradas com “nomes estranhos” ( _ , : , %) 
•Uma mesma função pode ser definida varias vezes, porém a ultima versão é a que é invocada 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
32
Shell Script 
Funções 
•Como passar argumentos para funções? 
R:Utilizando parâmetros posicionais. 
•Como retornar valores? 
R: três formas 
▫exit n (apenas inteiros) 
▫return n (apenas inteiros) 
▫echo “n” (strings) 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
33
Shell Script 
Redirecionadores 
Canais do Shell 
•stdin: Entrada padrão 
•stdout: Saída padrão 
•stderr: Saída padrã de erro 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
34
Shell Script 
Redirecionadores 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
35
Shell Script 
Redirecionadores 
•> - redireciona saída padrão para um arquivo, removendo-o caso exista. 
•>>- redireciona saída padrão para um arquivo, adicionando-a no final do arquivo. 
•< - redireciona a entrada padrão para um arquivo 
•2>- redireciona saída de erro padrão para um arquivo, removendo-o caso exista. 
•2>> - redireciona saída de erro padrão para um arquivo, adicionando-a no final do arquivo. 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
36
Shell Script 
Redirecionadores 
•Dispositivos especiais 
▫/dev/null 
▫/dev/zero 
▫/dev/random 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
37
Shell Script 
Arrays 
•Declaração 
▫name=( value0 value1 value2 “value3") 
▫name[1]=value1 
▫declare -a variable 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
38
Shell Script 
Arrays 
•Acesso 
▫${name[1]} 
•Retornar todos os elementos do array 
▫${vetor[@]} 
▫${vetor[*]} 
•Tamanho do array 
▫${#vetor[@]} 
▫${#vetor[*]} 
•Adicionando itens 
▫vetor=(${vetor[@]} "$elem") 
▫vetor=(${vetor[*]} "$elem") 
•Removendo itens 
▫unset vetor[1] 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
39
Shell Script 
Pipes 
•Forma de comunicação interprocessos onde a saída de um comando serve de entrada para outro comando 
•Sintaxe: 
▫Command1 | Command2 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
40
Shell Script 
Processamento de texto 
•Sed 
•Awk 
•Grep 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
41
Shell Script 
Processamento de texto(sed) 
•Editor de fluxo (Stream editor) 
•Muito utilizado em sistemas Unix 
•Trabalha com o conceito de expressões regulares 
•Sintaxe: 
▫sed „commad‟ file(s) 
•Alguns comandos 
▫s/TEXT1/TEXT2/ -substitui TEXT1 por TEXT2 
▫/d – deleta linhas ou entradas 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
42
Shell Script 
Processamento de texto(awk) 
•Linguagem de programação para processamento de dados baseados em texto 
•Sintaxe: 
▫awk „pattern{action}‟ file(s) 
•Alguns comandos 
▫{print $1} – Imprime o primeiro campo 
▫{print $1”t”$3} - Imprime o primeiro e terceiro campo separando-os com uma tabulação 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
43
Shell Script 
Processamento de texto(grep) 
•aplicativo que faz buscas procurando linhas que respeitem a expressão regular mencionada. 
•Sintaxe: 
▫grep [OPTIONS] PATTERN [FILE...] 
•Exemplos 
▫qrep aluno /etc/passwd – mostra todas as linhas que contem a palavra aluno no arquivo /etc/passwd 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
44
Shell Script 
Algumas Dicas 
•Utilize comentários 
•Evitar o uso de números mágicos 
•Nomes descritivos para variáveis e funções 
•Utilize exit de forma sistemática e significativa 
•Quebrar scripts complexos em partes mais simples(utilizando funções) 
•Evite redundâncias 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
45
Roteiro 
•Introdução 
•Shell Script 
▫Primeiro Programa 
▫SheBang! 
▫Comando echo 
▫Variáveis 
▫Comentários 
▫Parâmetros Posicionais 
▫Status de Términio 
▫Estrutura de condição 
▫Estrutura de repetição 
▫Funções 
▫Redirecionadores 
▫Arrays 
▫Pipes 
▫Processamento de texto 
▫Dicas 
•Dialog; 
▫Introdução 
▫Tipos de caixa 
▫ Funcionamento do dialog 
•Uso do Dialog; 
▫Exemplos 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
46
Dialog 
Introdução 
•O que é o Dialog 
“O Dialog é um programa para console (modo texto) que desenha caixas de diálogo na tela, similares as do modo gráfico, com botões, entradas para texto e menu” AURELIO, M. J. 
▫Parâmetros via linha de comando; 
▫Interatividade = usuário precisa operar durante a execução; 
▫Semelhança com programas gráficos; 
▫Útil para logins registros ; 
▫Prático para iniciantes ; 
▫Várias versões até a atual ; 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
47
Dialog 
Tipos de caixa 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
48
Dialog 
Calendar 
dialog 
--title 'Escolha a data'  
--calendar ''  
0 0  
31 12 1999 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
49
Dialog 
Checklist 
dialog 
--title 'Seleção dos Componentes'  
--checklist 'O que você quer instalar?'  0 0 0  
syntax 'Arquivos de sintaxe' on  mouse 'Suporte a mouse' off  
color 'Suporte a cores' on  
beep 'Driver avançado de som' off 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
50
Dialog 
Fselect 
dialog 
--title 'Escolha onde instalar'  
--fselect /usr/share/vim/  
0 0 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
51
Dialog 
Gauge 
dialog 
--title 'Instalação dos Pacotes'  
--gauge 'nInstalando Vim-6.0a.tgz...'  8 40 60 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
52
Dialog 
Infobox 
dialog 
--title 'Aguarde'  
--infobox 'n 
Finalizando em 5 segundos...'  
0 0 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
53
Dialog 
Inputbox, Passwordbox 
dialog 
--title 'Confirmação'  
--passwordbox 'Por favor, confirme a senha:'  
0 0 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
54
Dialog 
Menu 
dialog 
--title 'Perfil'  
--menu 'Escolha o perfil da instalação:'  0 0 0  
mínima 'Instala o mínimo'  
completa 'Instala tudo'  
customizada 'Você escolhe' 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
55
Dialog 
Msgbox 
dialog 
--title 'Parabéns'  
--msgbox 'Instalação finalizada com sucesso.'  
6 40 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
56
Dialog 
Radiolist 
dialog 
--title 'Pergunta'  
--radiolist 'Há quanto tempo você usa o Vi?'  
0 0 0  
iniciante 'até 1 ano' on  
experiente 'mais de 1 ano' off  guru 'mais de 3 anos' off 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
57
Dialog 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
58 
Tailbox, Tailboxbg 
dialog 
--title 'Monitorando Mensagens do Sistema'  
--tailbox out  
0 0
Dialog 
Textbox 
dialog 
--title 'Visualizando Arquivo'  
--textbox/usr/share/vim/vim60/indent.vim  
0 0 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
59
Dialog 
Timebox 
dialog 
--title 'Ajuste o Relógio'  
--timebox 'nDICA: Use as setas e o TAB.'  0 0  23 59 30 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
60
Dialog 
Yesno 
dialog 
--title 'AVISO'  
--yesno 'n 
O Vi foi instalado e configurado. 
Você quer executá-lo agora?nn'  
0 0 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
61
Dialog 
Funcionamento do Dialog 
•Os tipos de caixa apresentam alguma idéia de como funciona o Dialog ? De quais são suas principais funcionalidades ? 
•Simples de usar , pode assustar um pouco nas primeiras tentativas, por possuir uma sintaxe diferente de outros programas utilizados pelo shell ; 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
62
Dialog 
Funcionamento do Dialog 
•Parâmetros obrigatórios 
O formato de implementação mínimo e genérico do Dialog é : 
dialog --tipo-da-caixa '<texto>' <altura> <largura> 
tipo da caixa -> nome do tipo de caixa que se deseja utilizar; 
texto -> O texto é a palavra ou frase que aparece no início da caixa, logo após a primeira linha (borda superior). Passe uma string vazia '' caso não deseje texto. altura -> A altura é o número de linhas que serão utilizadas para desenhar a caixa, inclusive a primeira e a última que fazem as bordas superior e inferior. 
largura -> A largura é o número de colunas que serão utilizadas para desenhar a caixa, inclusive a primeira e a última que fazem as bordas esquerda e direita. 
•Quebra de linha automática (uso do (n) desnecessário); 
•Usando “0 0”(zero zero) para altura e largura = reajuste automático do tamanho da caixa; 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
63
Dialog 
Funcionamento do Dialog 
•Aprenderemos algumas características do Dialog como: 
▫Usa código de retorno para botões Sim/Não, Ok/Cancel 
▫Usa a saída de erro (STDERR) para textos e itens escolhidos 
•Uma das caixas mais utilizadas do Dialog é a Yesno (sim,não), que dá opções ao usuário de confirmar ou negar uma escolha, mas como : 
Saber qual foi a escolha do usuário ? 
O Dialog utiliza o código de retorno ("Return Code") para informar qual foi o botão apertado. Como sabemos, o shell guarda esse código dentro da variável $?. 
Com um teste simples na linha de comando , verificamos o valor que pode ser 0 (zero) ou 1, segue abaixo : 
dialog --yesno 'sim ou não?' 0 0 ; echo Retorno: $? 
Se o retorno for 0(zero) o usuário escolheu sim , se 1 escolheu não; 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
64 
Memorizando -> SIM=0|NÃO=1
Dialog 
Funcionamento do Dialog 
•Como manipular esses retornos em scripts ? 
Pode-se criar uma estrutura simples com if e else para lidar com os retornos , segue abaixo um exemplo : 
dialog --yesno 'Quer saber o usuário logado ?' 0 0 
if [ $? = 0 ]; then 
echo "Agora são: $( date )" 
else 
echo 'Ok, não vou mostrar as horas.‘ 
fi 
Esse exemplo pode ser minimizado, se não for necessário o else, passando a ser : 
dialog --yesno 'Quer ver as horas?' 0 0 && echo "Agora são: $(date)" 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
65
Dialog 
Funcionamento do Dialog 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
66
Dialog 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
67
Referências 
IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 
68

More Related Content

What's hot

Sistema Operativos
Sistema OperativosSistema Operativos
Sistema Operativos
Bugui94
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
Christian Perone
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
Sérgio Souza Costa
 

What's hot (20)

Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida) Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida)
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Arquitetura de Computadores
Arquitetura de ComputadoresArquitetura de Computadores
Arquitetura de Computadores
 
Informática Básica - Aula 05 - Sistema Operacional Windows
Informática Básica - Aula 05 - Sistema Operacional WindowsInformática Básica - Aula 05 - Sistema Operacional Windows
Informática Básica - Aula 05 - Sistema Operacional Windows
 
Visualg
VisualgVisualg
Visualg
 
Padrões de Projetos de Interface do Usuário
Padrões de Projetos de Interface do UsuárioPadrões de Projetos de Interface do Usuário
Padrões de Projetos de Interface do Usuário
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Sistema Operativos
Sistema OperativosSistema Operativos
Sistema Operativos
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Informática básica-supera-cursos
Informática básica-supera-cursosInformática básica-supera-cursos
Informática básica-supera-cursos
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Discos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxDiscos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em Linux
 
Comandos Linux Parte 2
Comandos Linux Parte 2Comandos Linux Parte 2
Comandos Linux Parte 2
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
Introdução à Computação - Aula Prática 3 - Banco de Dados (Conversão do model...
 

Viewers also liked

Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
Adriano Melo
 
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
 
Curso básico de eletrônica digital parte 12
Curso básico de eletrônica digital parte 12Curso básico de eletrônica digital parte 12
Curso básico de eletrônica digital parte 12
Renan Boccia
 

Viewers also liked (20)

Curso Gratuito de Shell Script
Curso Gratuito de Shell ScriptCurso Gratuito de Shell Script
Curso Gratuito de Shell Script
 
Linux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e QuotasLinux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e Quotas
 
Shell Script
Shell ScriptShell Script
Shell Script
 
Shell script
Shell scriptShell script
Shell script
 
Introducao ao Shell Script
Introducao ao Shell ScriptIntroducao ao Shell Script
Introducao ao Shell Script
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)
 
Linux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosLinux - Shell e Comandos Básicos
Linux - Shell e Comandos Básicos
 
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
 
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
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
 
Java Script
Java ScriptJava Script
Java Script
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
Shell Script - Luz e trevas
Shell Script - Luz e trevasShell Script - Luz e trevas
Shell Script - Luz e trevas
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
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
 
Curso básico de eletrônica digital parte 12
Curso básico de eletrônica digital parte 12Curso básico de eletrônica digital parte 12
Curso básico de eletrônica digital parte 12
 
Segurança dos seus servidores Linux
Segurança dos seus servidores LinuxSegurança dos seus servidores Linux
Segurança dos seus servidores Linux
 

Similar to Minicurso Shell Script

Oficina shell
Oficina shellOficina shell
Oficina shell
apsegundo
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
JogosUnisinos
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
COTIC-PROEG (UFPA)
 

Similar to Minicurso Shell Script (20)

Shell script
Shell scriptShell script
Shell script
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Aula01
Aula01Aula01
Aula01
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
Oficina shell
Oficina shellOficina shell
Oficina shell
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducao
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
PHP(I-Bim).ppt
PHP(I-Bim).pptPHP(I-Bim).ppt
PHP(I-Bim).ppt
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Notas deaulas
Notas deaulasNotas deaulas
Notas deaulas
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Minicurso Java && Cl
Minicurso Java && ClMinicurso Java && Cl
Minicurso Java && Cl
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
 

Recently uploaded

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Recently uploaded (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 

Minicurso Shell Script

  • 1. Minicurso:Desenvolvendo aplicações em Shell Script com interface interativa Apresentadores: Igor Rafael da Rocha Luís Eduardo Tenório Silva
  • 2. Apresentadores Igor Rafael da Rocha Luís Eduardo Tenório da Silva IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 2
  • 3. Roteiro •Introdução •Shell Script ▫Primeiro Programa ▫SheBang! ▫Comando echo ▫Variáveis ▫Comentários ▫Parâmetros Posicionais ▫Status de Términio ▫Estrutura de condição ▫Estrutura de repetição ▫Funções ▫Redirecionadores ▫Arrays ▫Pipes ▫Processamento de texto ▫Dicas •Dialog; ▫Introdução ▫Tipos de caixa ▫ Funcionamento do dialog •Uso do Dialog; ▫Exemplos IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 3
  • 4. Roteiro •Introdução •Shell Script ▫Primeiro Programa ▫SheBang! ▫Comando echo ▫Variáveis ▫Comentários ▫Parâmetros Posicionais ▫Status de Términio ▫Estrutura de condição ▫Estrutura de repetição ▫Funções ▫Redirecionadores ▫Arrays ▫Pipes ▫Processamento de texto ▫Dicas •Dialog; ▫Introdução ▫Tipos de caixa ▫ Funcionamento do dialog •Uso do Dialog; ▫Exemplos IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 4
  • 5. Introdução O que é shell? •Programa que permite ao usuário interagir com o Sistema Operacional(SO) através de comandos digitados do teclado. IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 5
  • 6. Introdução Tipos de shell •bash (Bourne Again Shell) •sh (Bourne Shell) •ksh (Korn Shell) •csh (C Shell) •zsh (Z shell) •Como saber o shell que estou utilizando? ▫echo $SHELL IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 6
  • 7. Introdução O que é shell script? “ Linguagem de script usada em vários sistemas operacionais, com diferentes dialetos, dependendo do interpretador de comandos utilizado(shell).” Wikipédia IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 7
  • 8. Roteiro •Introdução •Shell Script ▫Primeiro Programa ▫SheBang! ▫Comando echo ▫Variáveis ▫Comentários ▫Parâmetros Posicionais ▫Status de Términio ▫Estrutura de condição ▫Estrutura de repetição ▫Funções ▫Redirecionadores ▫Arrays ▫Pipes ▫Processamento de texto ▫Dicas •Dialog; ▫Introdução ▫Tipos de caixa ▫ Funcionamento do dialog •Uso do Dialog; ▫Exemplos IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 8
  • 9. Shell Script Primeiro Programa #!/bin/bash echo -e “Hello World!” •Terminal: ▫chmod +x hello.sh ▫./hello.sh IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 9
  • 10. Shell Script SheBang •Refere-se aos caracteres #!, quando os mesmos são os primeiros caracteres em um arquivo. Utilizado para identificar o tipo de interpretador que será utilizado no programa. •Ex: ▫#!/bin/bash ▫#!/bin/sh ▫#!/bin/perl ▫#!/bin/python IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 10
  • 11. Shell Script Comando echo •Imprime texto na saída do shell • -e: interpreta caracteres de escape •Obs: ▫“” –Interpreta variáveis (aspas duplas) ▫„‟ – Não interpreta variáveis (aspas simples) ▫`` - Interpreta comandos (crases) IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 11
  • 12. Shell Script Variáveis •Definição ▫NOME=valor •Acesso: ▫$NOME IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 12
  • 13. Shell Script Variáveis especiais •$0- Nome do script em execução •$1-$9- Parâmetros posicionais •${10} ...- Parâmetros posicionais •$#- Número de parâmetros passados •$$- PID •$?- Valor de retorno IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 13
  • 14. Shell Script Tipos de Variáveis •Em shell-script as variáveis não são tipadas, mas podemos limitar a atribuição de tipos a variáveis com o comando declare •Sintaxe: ▫declare <OPTION(S)> <VARIABLE>=<value> •Options: ▫-a : Array ▫-f : Função ▫-i : Inteiro ▫-r : Somente leitura (constante) IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 14
  • 15. Shell Script Comando read •Recebe entrada do usuário e guarda em uma variável •Sintaxe ▫read VARIABLE IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 15
  • 16. Shell Script Comentários •Linhas que serão ignoradas pelo interpretador. Utilizado para descrever a lógica ou algum comando utilizado. •Sintaxe: ▫# IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 16
  • 17. Shell Script Parâmetros Posicionais •Argumentos que são passados na linha de comando quando invocado um script. •Sintaxe: ▫$1...$9 ▫${10} …. IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 17
  • 18. Shell Script Status de Término (exit) •Todo script ao ser executado retorna um valor que identifica o status do mesmo. Retorna um valor entre 0 e 255. •Sintaxe: ▫exit <NUMBER> IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 18
  • 19. Shell Script Status de Término (exit) IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 19 Exit Code Number Significado 0 Script executado com sucesso 1 Erros Gerais 2 Uso indevíduo do shell 126 Comando não pode ser executado 127 Comando não encontrado 128 Argumento inválido para exit 128 +n Erro Fatal +sinal “n” 130 Finalizado com Ctrl +c 255* Fora do intervalo
  • 20. Shell Script Estrutura de Condição •If...Else •If...Elif...Else •Case IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 20
  • 21. Shell Script If...Else •Sintaxe: if [ OPTION(s) ];then CONDITION else CONDITION IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 21
  • 22. Shell Script If...Elif...Else •Sintaxe: if [ OPTION(s) ];then CONDITION elif [ OPTION(s) ];then CONDITION else CONDITION IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 22
  • 23. Shell Script Tabela de opções •Comparativos de números: IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 23 Operação Significado $a -lt $b Menor que (less than) $a -le $b Menor ou igual (less or equal) $a -gt $b Maior que (greater than) $a -ge $b Maior ou igual (greater or equal) $a -eq $b Igual (equal)
  • 24. Shell Script Tabela de opções •Comparativos de strings: IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 24 Operação Significado [ -z STRING ] Verifica se string possui comprimento zero [ -n STRING] ou [ STRING ] Verifica se string não possui comprimento zero [ STRING1 == STRING2 ] Verifica se strings são iguais [ STRING1 != STRING2 ] Verifica se strings são diferentes [ STRING1 < STRING2 ] Verifica se STRING1 é menor que STRING2 [ STRING1 > STRING2 ] Verifica se STRING1 é maior que STRING2
  • 25. Shell Script Tabela de opções •Expressões: IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 25 Operação Significado [ !EXPR ] Negação do valor da expressão ( verdade se EXPR falso) [ (EXPR) ] Precedência [ EXPR1 -a EXPR2 ] ou [ EXPR1 && EXPR2 ] Tabela and [ EXPR1 -o EXPR2 ] ou [ EXPR1 || EXPR2 ] Tabela or
  • 26. Shell Script Tabela de opções •Operações com arquivos : IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 26 Operação Significado [ -e ARQ ] Verdadeiro se ARQ existe. [ -d ARQ ] Verdadeiro se ARQ existe e se é diretório. [ -r ARQ ] Verdadeiro se ARQ existe e se é legível. [ -w ARQ ] Verdadeiro se ARQ existe e se tem permissão de escrita. [ -x ARQ ] Verdadeiro se ARQ existe e se é executável [ -z ARQ ] Verdadeiro se ARQ estiver vazio
  • 27. Shell Script Case •Sintaxe: case "$variable" in "$condition1" ) command... ;; "$condition2" ) command... ;; *) command... ;; esac IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 27
  • 28. Shell Script Estrutura de Repetição •For •While IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 28
  • 29. Shell Script For •Sintaxe: for (( c=1; c<=5; c++ )); do command done •Sintaxe 2 for VARIABLE in VALUE_LIST; do command done IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 29
  • 30. Shell Script For •Sintaxe: while [ condition ];do command(s)... done IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 30
  • 31. Shell Script Funções •Sub-rotinas (bloco de código) que implementa um conjunto de operações e executa uma tarefa específica. •Sintaxe: function_name () { command... } •Chamada: function_name IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 31
  • 32. Shell Script Funções •Devem ser declaradas antes de suas chamadas •Não podem estarem vazias •Podem ser criadas dentro de outras funções (embora inútil) •Podem ser declaradas com “nomes estranhos” ( _ , : , %) •Uma mesma função pode ser definida varias vezes, porém a ultima versão é a que é invocada IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 32
  • 33. Shell Script Funções •Como passar argumentos para funções? R:Utilizando parâmetros posicionais. •Como retornar valores? R: três formas ▫exit n (apenas inteiros) ▫return n (apenas inteiros) ▫echo “n” (strings) IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 33
  • 34. Shell Script Redirecionadores Canais do Shell •stdin: Entrada padrão •stdout: Saída padrão •stderr: Saída padrã de erro IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 34
  • 35. Shell Script Redirecionadores IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 35
  • 36. Shell Script Redirecionadores •> - redireciona saída padrão para um arquivo, removendo-o caso exista. •>>- redireciona saída padrão para um arquivo, adicionando-a no final do arquivo. •< - redireciona a entrada padrão para um arquivo •2>- redireciona saída de erro padrão para um arquivo, removendo-o caso exista. •2>> - redireciona saída de erro padrão para um arquivo, adicionando-a no final do arquivo. IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 36
  • 37. Shell Script Redirecionadores •Dispositivos especiais ▫/dev/null ▫/dev/zero ▫/dev/random IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 37
  • 38. Shell Script Arrays •Declaração ▫name=( value0 value1 value2 “value3") ▫name[1]=value1 ▫declare -a variable IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 38
  • 39. Shell Script Arrays •Acesso ▫${name[1]} •Retornar todos os elementos do array ▫${vetor[@]} ▫${vetor[*]} •Tamanho do array ▫${#vetor[@]} ▫${#vetor[*]} •Adicionando itens ▫vetor=(${vetor[@]} "$elem") ▫vetor=(${vetor[*]} "$elem") •Removendo itens ▫unset vetor[1] IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 39
  • 40. Shell Script Pipes •Forma de comunicação interprocessos onde a saída de um comando serve de entrada para outro comando •Sintaxe: ▫Command1 | Command2 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 40
  • 41. Shell Script Processamento de texto •Sed •Awk •Grep IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 41
  • 42. Shell Script Processamento de texto(sed) •Editor de fluxo (Stream editor) •Muito utilizado em sistemas Unix •Trabalha com o conceito de expressões regulares •Sintaxe: ▫sed „commad‟ file(s) •Alguns comandos ▫s/TEXT1/TEXT2/ -substitui TEXT1 por TEXT2 ▫/d – deleta linhas ou entradas IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 42
  • 43. Shell Script Processamento de texto(awk) •Linguagem de programação para processamento de dados baseados em texto •Sintaxe: ▫awk „pattern{action}‟ file(s) •Alguns comandos ▫{print $1} – Imprime o primeiro campo ▫{print $1”t”$3} - Imprime o primeiro e terceiro campo separando-os com uma tabulação IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 43
  • 44. Shell Script Processamento de texto(grep) •aplicativo que faz buscas procurando linhas que respeitem a expressão regular mencionada. •Sintaxe: ▫grep [OPTIONS] PATTERN [FILE...] •Exemplos ▫qrep aluno /etc/passwd – mostra todas as linhas que contem a palavra aluno no arquivo /etc/passwd IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 44
  • 45. Shell Script Algumas Dicas •Utilize comentários •Evitar o uso de números mágicos •Nomes descritivos para variáveis e funções •Utilize exit de forma sistemática e significativa •Quebrar scripts complexos em partes mais simples(utilizando funções) •Evite redundâncias IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 45
  • 46. Roteiro •Introdução •Shell Script ▫Primeiro Programa ▫SheBang! ▫Comando echo ▫Variáveis ▫Comentários ▫Parâmetros Posicionais ▫Status de Términio ▫Estrutura de condição ▫Estrutura de repetição ▫Funções ▫Redirecionadores ▫Arrays ▫Pipes ▫Processamento de texto ▫Dicas •Dialog; ▫Introdução ▫Tipos de caixa ▫ Funcionamento do dialog •Uso do Dialog; ▫Exemplos IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 46
  • 47. Dialog Introdução •O que é o Dialog “O Dialog é um programa para console (modo texto) que desenha caixas de diálogo na tela, similares as do modo gráfico, com botões, entradas para texto e menu” AURELIO, M. J. ▫Parâmetros via linha de comando; ▫Interatividade = usuário precisa operar durante a execução; ▫Semelhança com programas gráficos; ▫Útil para logins registros ; ▫Prático para iniciantes ; ▫Várias versões até a atual ; IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 47
  • 48. Dialog Tipos de caixa IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 48
  • 49. Dialog Calendar dialog --title 'Escolha a data' --calendar '' 0 0 31 12 1999 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 49
  • 50. Dialog Checklist dialog --title 'Seleção dos Componentes' --checklist 'O que você quer instalar?' 0 0 0 syntax 'Arquivos de sintaxe' on mouse 'Suporte a mouse' off color 'Suporte a cores' on beep 'Driver avançado de som' off IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 50
  • 51. Dialog Fselect dialog --title 'Escolha onde instalar' --fselect /usr/share/vim/ 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 51
  • 52. Dialog Gauge dialog --title 'Instalação dos Pacotes' --gauge 'nInstalando Vim-6.0a.tgz...' 8 40 60 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 52
  • 53. Dialog Infobox dialog --title 'Aguarde' --infobox 'n Finalizando em 5 segundos...' 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 53
  • 54. Dialog Inputbox, Passwordbox dialog --title 'Confirmação' --passwordbox 'Por favor, confirme a senha:' 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 54
  • 55. Dialog Menu dialog --title 'Perfil' --menu 'Escolha o perfil da instalação:' 0 0 0 mínima 'Instala o mínimo' completa 'Instala tudo' customizada 'Você escolhe' IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 55
  • 56. Dialog Msgbox dialog --title 'Parabéns' --msgbox 'Instalação finalizada com sucesso.' 6 40 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 56
  • 57. Dialog Radiolist dialog --title 'Pergunta' --radiolist 'Há quanto tempo você usa o Vi?' 0 0 0 iniciante 'até 1 ano' on experiente 'mais de 1 ano' off guru 'mais de 3 anos' off IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 57
  • 58. Dialog IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 58 Tailbox, Tailboxbg dialog --title 'Monitorando Mensagens do Sistema' --tailbox out 0 0
  • 59. Dialog Textbox dialog --title 'Visualizando Arquivo' --textbox/usr/share/vim/vim60/indent.vim 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 59
  • 60. Dialog Timebox dialog --title 'Ajuste o Relógio' --timebox 'nDICA: Use as setas e o TAB.' 0 0 23 59 30 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 60
  • 61. Dialog Yesno dialog --title 'AVISO' --yesno 'n O Vi foi instalado e configurado. Você quer executá-lo agora?nn' 0 0 IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 61
  • 62. Dialog Funcionamento do Dialog •Os tipos de caixa apresentam alguma idéia de como funciona o Dialog ? De quais são suas principais funcionalidades ? •Simples de usar , pode assustar um pouco nas primeiras tentativas, por possuir uma sintaxe diferente de outros programas utilizados pelo shell ; IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 62
  • 63. Dialog Funcionamento do Dialog •Parâmetros obrigatórios O formato de implementação mínimo e genérico do Dialog é : dialog --tipo-da-caixa '<texto>' <altura> <largura> tipo da caixa -> nome do tipo de caixa que se deseja utilizar; texto -> O texto é a palavra ou frase que aparece no início da caixa, logo após a primeira linha (borda superior). Passe uma string vazia '' caso não deseje texto. altura -> A altura é o número de linhas que serão utilizadas para desenhar a caixa, inclusive a primeira e a última que fazem as bordas superior e inferior. largura -> A largura é o número de colunas que serão utilizadas para desenhar a caixa, inclusive a primeira e a última que fazem as bordas esquerda e direita. •Quebra de linha automática (uso do (n) desnecessário); •Usando “0 0”(zero zero) para altura e largura = reajuste automático do tamanho da caixa; IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 63
  • 64. Dialog Funcionamento do Dialog •Aprenderemos algumas características do Dialog como: ▫Usa código de retorno para botões Sim/Não, Ok/Cancel ▫Usa a saída de erro (STDERR) para textos e itens escolhidos •Uma das caixas mais utilizadas do Dialog é a Yesno (sim,não), que dá opções ao usuário de confirmar ou negar uma escolha, mas como : Saber qual foi a escolha do usuário ? O Dialog utiliza o código de retorno ("Return Code") para informar qual foi o botão apertado. Como sabemos, o shell guarda esse código dentro da variável $?. Com um teste simples na linha de comando , verificamos o valor que pode ser 0 (zero) ou 1, segue abaixo : dialog --yesno 'sim ou não?' 0 0 ; echo Retorno: $? Se o retorno for 0(zero) o usuário escolheu sim , se 1 escolheu não; IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 64 Memorizando -> SIM=0|NÃO=1
  • 65. Dialog Funcionamento do Dialog •Como manipular esses retornos em scripts ? Pode-se criar uma estrutura simples com if e else para lidar com os retornos , segue abaixo um exemplo : dialog --yesno 'Quer saber o usuário logado ?' 0 0 if [ $? = 0 ]; then echo "Agora são: $( date )" else echo 'Ok, não vou mostrar as horas.‘ fi Esse exemplo pode ser minimizado, se não for necessário o else, passando a ser : dialog --yesno 'Quer ver as horas?' 0 0 && echo "Agora são: $(date)" IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 65
  • 66. Dialog Funcionamento do Dialog IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 66
  • 67. Dialog IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 67
  • 68. Referências IF-AL igorlogos@gmail.com | eduardovansilva@gmail.com 68