0% acharam este documento útil (0 voto)
21 visualizações14 páginas

Curso 126229 Aula 03 v1

A Aula 03 do curso de Desenvolvimento de Sistemas II aborda o uso de scripts e expressões regulares em shell script, destacando a importância do Bourne Shell e suas variantes na automação de tarefas. O documento também explora a criação de scripts para manipulação de variáveis, estruturas de decisão e repetição, além de introduzir expressões regulares como GREP e POSIX para busca e manipulação de texto. Exemplos práticos são fornecidos para ilustrar a aplicação desses conceitos em ambientes de banco de dados e comandos de shell.

Enviado por

beckbeck20177
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
21 visualizações14 páginas

Curso 126229 Aula 03 v1

A Aula 03 do curso de Desenvolvimento de Sistemas II aborda o uso de scripts e expressões regulares em shell script, destacando a importância do Bourne Shell e suas variantes na automação de tarefas. O documento também explora a criação de scripts para manipulação de variáveis, estruturas de decisão e repetição, além de introduzir expressões regulares como GREP e POSIX para busca e manipulação de texto. Exemplos práticos são fornecidos para ilustrar a aplicação desses conceitos em ambientes de banco de dados e comandos de shell.

Enviado por

beckbeck20177
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Aula 03

Desenvolvimento de Sistemas II p/
Polícia Federal (Perito - Área 3 - Tec da
Informação) - 2020

Autores:
Judah Reis, Pedro Henrique
Chagas Freitas
Aula 03
20 de Fevereiro de 2020
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis

1 – Scripts e Expressões regulares ........................................................................ 2


2 – Expressões regulares: GREP e POSIX ............................................................... 9
2.2 – Criação de arquivos com dados .............................................................................. 10
3 – Questões ...................................................................................................... 13

1265118

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

1 – SCRIPTS E EXPRESSÕES REGULARES

Expressões regulares são bastante utilizadas para apoiar a tecnologia shell script, por essa
razão para facilitar nossa compreensão do tema, vamos elucidar alguns tópicos essências
sobre os scripts shell. Para tratarmos do funcionamento do Shell Script na automação de
tarefas, precisamos compreender como o shell funciona e como os scripts são utilizados, o
que nos ajudará também a entender como funcionam as expressões regulares.

Antes de mais nada, shell é um interpretador de comandos que possui uma linguagem
com inúmeras tarefas de administração, que podem ser aplicadas em banco de dados e
também em sistemas operacionais através de scripts, que são arquivos de linguagem
contendo instruções em sequência de um ou mais comandos, para realizar ou automatizar
tarefas (ELMASRI, NAVATHE, 2011).

Por sua vez, a linguagem shell, sendo um interpretador de scripts, não tem a necessidade
de compilação para executar os scripts, isto ocorre, porque a linguagem shell independe
de compilação prévia ou de compilador. O Shell foi escrito em diferentes versões, logo
temos vários tipos de shell: Bourne Shell, Korn Shell, C Shell, por exemplo, se destacam
como os mais utilizados e reconhecidos mundialmente (COULOURIS, 2013).

O Bourne Shell é conhecido como Shell padrão, sendo altamente difundido por causa dos
sistemas Unix, já o Korn Shell é uma versão aprimorada do Bourne Shell e o C Shell possui
uma estrutura similar a linguagem C, sendo também uma versão modificada e aprimorada
do Bourne Shell. Além destes, temos também o shell padrão do Linux, conhecido como
Bourne-Again Shell.

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

Tipo de Shell Representação computacional

Bourn Shell Sh

Bourn-Again Shell bash

Korn Shell Ksh

C Shell Csh

==134dde==

Entre as versões do Shell não temos grande diferenciação quanto a automação de tarefas,
tendo em vista que ambos realizaram a automação de tarefas em sistemas. Para fins
didáticos, adotaremos o Bourne Shell, para conceituar e exemplificar os scripts shell (DATE,
2004).

Para inicializar a execução de um shell script para automação em um banco de dados,


devemos utilizar os caracteres: #!/bin/bash, sendo que a depender do tipo de banco de
dados, o comando de inicialização de execução de scripts pode mudar, mas normalmente
este comando é aceito, principalmente em banco de dados MySQL.

Temos então caracteres especiais como (#!) que é conhecido como hash-bang, eles são
responsáveis por informar ao kernel de um sistema operacional ou a um banco de dados,
que o próximo argumento é um script utilizado para executar ou automatizar alguma
tarefa. Logo, o Banco de dados lê e interpreta o comando shell script como uma linha de
código e inicializa a execução do script (ELMASRI, NAVATHE, 2011).

Para automatizar tarefas em banco de dados é fundamental salvar os arquivos de script


shell, tendo em vista que, para executar rotinas automatizadas em qualquer banco de
dados, precisamos ter um script de consulta salvo. Os scripts shell para automação de
tarefas, devem ser salvos no PATH, o PATH é responsável por armazenar os registros de
gerenciamento do sistema gerenciador de banco de dados (SGBD). Após o armazenamento
3

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

dos scripts shell no PATH, toda vez, que houver no banco de dados, um comando que
contenha o shell script, este será executado automaticamente, através do caminho do
diretório onde está o script shell foi salvo. (COULOURIS, 2013).

Para tratar dos comandos shell script para criação de variáveis de entrada e saída de dados,
vamos realizar a passagem de parâmetros e argumentos entre variáveis e
respectivamente suas entradas e saídas. Para isso, precisamos compreender que variáveis
são parâmetros passados como argumentos para um determinado script, dessa forma as
variáveis são responsáveis por guardar dados (DATE, 2004).

Quando um sistema, recebe argumentos em uma linha de comando de shell script, estes
são chamados de parâmetros posicionais e são numerados de acordo com a ordem em
que foram passados, logo após elaboração do script que mostraremos a seguir, precisamos
meramente incluí-los (salva-lo) em um diretório no PATH para que toda vez que,
determinada tarefa for realizada pelo Banco de Dados, ocorra a execução e automatização
do script (ELMASRI, NAVATHE, 2011).

Temos então como exemplo, a criação de um script que recebe (entrada) e mostra dados
(saída), armazenando esses dados em variáveis:

$ cat [Link]
#Programa recebe e mostra dados

echo Cidade: $1
echo Estado: $2
echo País: $3

$ ./[Link] Niterói "Rio de Janeiro" Brasil


Cidade: Fortaleza
4

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

Estado: Ceará
País: Brasil

Como demonstrado, o script shell se chama “variaveisentradasaida” e recebe três variáveis,


com argumentos: Cidade, Estado e País. A variável $1 recebe (entrada): Cidade, a variável
$2 recebe (entrada): Estado e a variável $3 recebe (entrada): País. Em seguida, nós
atribuímos as variáveis Cidade (Fortaleza), Estado (Ceará) e País (Brasil).

Agora vamos passar sete variáveis, com seus respectivos argumentos e vamos apresentar
uma saída com todos os argumentos listados, conforme a ordem de inserção (entrada).

$ cat [Link]
#Programa recebe e mostra dados usando shift

echo Argumento1: $1
echo Argumento2: $2
echo Argumento3: $3
echo Argumento4: $4
echo Argumento5: $5
echo Argumento6: $6
echo Argumento7: $7

$ ./[Link] a b c d e f g

Argumento1: a
Argumento2: b
Argumento3: c
Argumento4: d
Argumento5: e

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

Argumento6: f
Argumento7: g

Feito isto, temos sete variáveis, com seus respectivos argumentos sendo apresentadas no
shell script com o uso do comando shift para listagem das saídas dos argumentos: a, b, c,
d, e, f, g.

Abaixo podemos ver um exemplo da tela de prompt de comando para automatização de


exportação de um banco de dados MySQL no Linux. Lembrando que neste caso, a figura
foi posta meramente para familiariza-lo com uma tela de comandos shell script, sem
necessariamente aprofundarmos na implementação da exportação de um banco MySQL
para Linux, o que fugiria aos objetivos desta aula.

Para verificarmos as estruturas de decisão e repetição em shell script, precisamos


primeiramente compreender o que são estruturas de decisão e de repetição. As estruturas
de decisão são estruturas que verificam um comando e realizam um decisão, e são
utilizados em diferentes linguagens, além do shell script. Já as estruturas de repetição elas
são utilizadas para implementar Loops ou Laços de repetição para um determinado
comando (COULOURIS, 2013).

Temos como exemplo de estruturas de decisão o “if” que é uma estrutura de definição
para testar condições “se” verdadeiras ou “se” falsas, no caso se falsas, utiliza-se o “else”,
outra estrutura de definição é o switch que é uma declaração de múltiplas escolhas, onde
de acordo com determinada situação (case), utiliza-se um comando. Por fim, as estruturas
de repetição podem ser o laço “for”, utilizado quando temos um termino definido da
condição de repetição e o laço “while”, utilizado quando temos ou não uma condição de
termino de repetição definida (ELMASRI, NAVATHE, 2011).

Para demonstrar a utilização de uma estrutura de decisão, vamos utilizar uma operação
automatizada em shell script para verificação de operadores booleanos (“acertou ou
errou”), com números, em conjunto com o –a que em shell representa “e”.

cat [Link]
#!/bin/bash

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

read -p "Informe um número: " num


if [ \( "$num" -gt 0 -a "$num" -lt 10 \)]
then
echo "Acertou a faixa do número."
else
echo "Errou a faixa do número."

Neste caso, indicamos que um número deve ser informado, se (if) o número estiver entre
0 e 10, então (then): acertamos a faixa do número, se não (else): erramos a faixa do
número. Outro exemplo possível, é a utilização da estrutura de decisão com “case”, por
exemplo: Vamos verificar o código do DDD, conforme a cidade:

echo "Insira o código DDD: "

read cod

case $cod in

21) echo "Rio de Janeiro";;


11) echo "São Paulo";;
31) echo "Minas Gerais";;

*) Echo "Insira outro código";;

Por fim, podemos demonstrar estruturas de repetição utilizando os controles de loops, por
exemplo com o “while”, que é utilizado para testar uma condição e executar um comando.
No exemplo a seguir, vamos automatizar a multiplicação do número 5 até 10, ou seja, 0x5,
1x, 2x5, etc.

#!/bin/bash
echo "Tabela de Multiplicação do 7: "

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

i=7;
n=0;

while [ $n -le 10 ]
do
echo $i x $n = $(($i * $n))
let n++
done

E por fim, temos o “for” que outra estrutura de repetição, também utilizada para testar
condições e executar comandos em loop. Como exemplo, vamos criar diretórios com o
nome DiretorioShell, com números de 1 a 10.

#!/bin/bash

for i in 'seq 1 10'


do
mkdir DiretorioShell$i
done

$ ./[Link]

DiretorioShell1
DiretorioShell2
DiretorioShell3
DiretorioShell4
DiretorioShell5
DiretorioShell6
DiretorioShell7
DiretorioShell8
DiretorioShell9
DiretorioShell10

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

2 – EXPRESSÕES REGULARES: GREP E POSIX

Após essa introdução, podemos conceituar as expressões regulares como notações


utilizadas principalmente em shell para identificar padrões textuais. Expressões
regulares são responsáveis então por definir conjuntos de strings, onde uma string
simples será uma representação de uma expressão regular que define uma string,
enquanto que uma expressão regular complexa utilizará letras, números e caracteres
especiais para definir diferentes tipos de strings.

Expressões regulares simples: Representação de uma expressão regular que define uma
string.

Expressões regulares complexas: Utilizará letras, números e caracteres especiais para


definir diferentes tipos de strings.

As expressões regulares GREP e POSIX são suportadas por vários tipos de programas
que utilizam linha de comando e respectivamente por vários tipos de linguagens de
programação, logo a manipulações de texto através de expressões regulares: grep e
posix pode ocorrer em inúmeros cenários, como nossa linguagem de comando mais
difundida é o shell, adotaremos as expressões regulares GREP e POSIX, conforme
perspectiva dos scripts shell.

O grep e o posix são expressões regulares utilizados em shell script para demonstrar a
utilização de arquivos de textos especificando estes para buscas, execuções, alterações,
etc. Exemplo:

$ ls /usr/bin | grep zip


Pastazip1
pastazip2
pastazip3

No exemplo estamos usando o grep para buscar strings fixas (pastazip1, pastazip2, etc).

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

Podemos utilizar então o grep ou posix para realizar busca de arquivos por expressões
regulares, a tabela abaixo demonstra algumas opções utilizadas:

Opção Descrição

Ignora caixa, não distingue entre caracteres maiúsculos e


-i
minúsculos.

Inverter o casamento entre strings, mostra todas as


-v
linhas que não contém o casamento

Mostra o número de casamentos entre strings (ou não-


-c
casamentos no caso de –v)

Mostra os nomes do arquivos que contém o casamento,


-l
ao invés das linhas
Similar a opção –l, mas que mostra os arquivos que não
-L
contém casamentos.
-n Prefixa cada linha casada com o número da linha.
Para pesquisa com múltiplos arquivos, suprime o nome
-h
do arquivo na saída.

2.2 – CRIAÇÃO DE ARQUIVOS COM DADOS TXT

Neste exemplo, vamos criar arquivos de dados txt utilizando expressões regulares grep:

$ ls /bin > grep [Link]


$ ls /usr/bin > grep [Link]
$ ls /sbin > grep [Link]
$ ls /usr/sbin > grep [Link]
$ ls dirlist*.txt

[Link]
[Link]
[Link]
10

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

[Link]

Importante: Expressões regulares podem utilizar caracteres literais (caracteres que se


representam) ou caracteres especiais (caracteres que são usados para representar
casamentos mais complexos) são eles: ^ $ . [ ] * \ ? + ( ) { } |.

Temos também os delimitadores, que podem ser utilizados para marcar o início e o fim
de uma expressão regular. O delimitador é sempre um caractere especial para a
expressão regular que ele delimita (não representa a si próprio). Algumas expressões
regulares permitem o uso de outros caracteres como delimitadores, enquanto o grep
não usa nenhum delimitador, todavia o mais comum é utilizar o (/) como delimitador.

A expressão regular mais básica é uma string simples que não contém nenhum caractere
especial, a não ser os delimitadores. Uma string simples casa somente ela mesmo, então
por exemplo podemos realizar buscas:

Expressão regular Exemplos de busca

Ring Ring, spring, ringing, stringing

Thurday Thursday, Thursday's

Or not or not, poor nothing

Especificamente falando do POSIX, temos também algumas características que o


distingue quanto ao significado de alguns caracteres.

POSIX Caracteres Significado

[:upper:] [A-Z] Letras maiúsculas

[:lower:] [a-z] Letras minúsculas

[:alpha:] [A-Za-z] Maiúsculas e minúsculas

[:alnum:] [A-Za-z0-9] Números

11

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
Prof. Pedro Freitas e Judah Reis 1265118

[:digit:] [0-9] Números hexadecimais

[:xdigit:] [0-9A-Fa-f] Caracteres de pontuação

[:punct:] [.,!?:...] Espaço em branco e TAB

[:blank:] [ \t] Espaço em branco e TAB

[:space:] [ \t\n\r\f\v] Caracteres brancos

[:graph:] [^ \t\n\r\f\v] Caracteres imprimíveis

[:print:] [^\t\n\r\f\v] Imprimíveis e o espaço

Finalizamos por aqui, oriento vocês que deixem esse tópico para o final, porque
realmente as expressões regulares não costumam ser cobradas.

12

Desenvolvimento de Sistemas II p/ Polícia Federal (Perito - Área 3 - Tec da Informação) - 2020


[Link]
Judah Reis, Pedro Henrique Chagas Freitas
Aula 03
1265118

3 – QUESTÕES

Desenvolvimento dede
Sistemas e Linguagem de Programação
Federalp/(Perito
BRB (Analista
Desenvolvimento
de TI) – Pós-Edital
Sistemas II p/ Polícia - Área 3 - Tec da Informação) - 2020 13
[Link]
[Link]

Você também pode gostar