Sistemas Operacionais II
O Shell Bash
Objetivos
• Conhecer a sintaxe dos comandos;
• Trabalhar com funções;
• Trabalhar com variáveis;
• Expressões aritméticas;
• Controle de Fluxo.
Escape
Exemplos
Funções
Uma função de shell é um grupo de comandos dentro de um script de shell. As funções shell permitem modularizar seu programa, dividindo a complexidade em tarefas atômicas.
nome (){
o script fica aqui dentro
}
Exemplo
#!/bin/bash
#Criei uma funcao
minhaFuncao(){
echo "Apenas uma funcao Teste”
}
#Chamando a funcao de dentro do script
minhaFuncao
Prática N. 01
• Fazer uma função que escreva seu nome e chamar a função.
Todos os exercícios de Script devem ser enviado o script e não o resultado (output).
Parâmetros
Utilizamos $ seguido da posição do parâmetro para capturar seu valor.
Exemplo
#!/bin/bash
#Criei uma funcao
minhaFuncao(){
echo "Apenas uma funcao Teste com parametro $1 e $2”
}
#Chamando a funcao de dentro do script
echo "Exemplo com dois parametros (`minhaFuncao Wellington Oliveira`)"
Resultado
aluno@vml:~/Desktop$ bash executa.sh
Exemplo com dois parâmetros (Apenas uma função Teste com parâmetro Wellington e Oliveira)
Prática N. 02
Fazer uma função para realizar a divisão de um número por outro e retornar o valor.
Variáveis
Variável é um espaço utilizado para armazenar um valor que ainda não se conhece (durante a codificação ou edição de scripts).
Para criar:
var=“Um exemplo”
Para usar:
echo “Estou usando a variavel: $var”
Prática N. 03
Criar um script com uma variável e escrever ela na tela.
Variáveis Internas do Shell
O Shell possui algumas variáveis internas usadas para desenvolver scripts de qualidade.
Variáveis Internas do Shell
Prática N. 04
Fazer um script que utilize todas as variáveis internas do shell, só que por favor, concatenar com texto para ficar show.
Outras variáveis do Shell
Array
Array são coleções de elementos semelhantes.
mensagem=(prof wellington pinto de oliveira)
Array
mensagem[0]=prof
mensagem[1]=wellington
mensagem[2]=pinto
mensagem[3]=de
mensagem[4]=oliveira
Array
Prática N. 05
Fazer um array com seu nome e exibir o primeiro nome e o último nome.
Operadores
O Bash utiliza os operadores aritméticos da linguagem C.
Operadores
Operadores
Exemplos
#!/bin/bash
expr 1 + 3
expr 2 – 1
expr 10 / 2
expr 20 % 3
expr 10 \* 3
echo `expr 6 + 3`
Prática N. 06
Fazer um script que utiliza os operadores (++ -- ** + - / *)
Usar os números do seu RA
Desvio de fluxo
Utilizamos o if para desviar um fluxo dado uma condição.
if condição
then
#bloco se verdade
else
#bloco se falso
fi
Exemplo
#!/bin/bash
if [ $# = 0 ]
then
echo "Não existe Argumentos"
else
echo "Existe argumentos"
fi
Prática N. 07
Se seu RA (registro acadêmico) for par escreva na tela “Meu RA é par” caso contrário escreva na tela “Meu RA é Impar”.
Laço de Repetição
Permite realizar iterações um determinado bloco de script.
Sintaxe for
for( inicial; condição; incremento)
do
done
Exemplo
#!/bin/bash
meuarray=(wellington pinto de oliveira)
tLen=${#meuarray[@]}
for (( i=0; i<${tLen}; i++ ));
do
echo "Parte: ${meuarray[i]} "
done
Sintaxe for
for elemento in coleção
do
done
Exemplo
#!/bin/bash
for pessoa in `users`
do
echo $pessoa
done
Prática N. 08
Fazer um script para listar o diretório corrente de execução e exibir somente os arquivos que são .sh
Prática N 09
Listar o diretório corrente e exibir o nome de todos os arquivos com menos de 10 caracteres (no nome).
Prática N. 10
Listar o diretório Desktop (arquivos e diretórios) e exibir o tipo de arquivo ou diretório.
Prática N. 11
Exibir todos os usuários logados no formato:
Usuário: xxxxxx
Onde xxxxx é o login do usuário
Prática N. 12
Listar os grupos dos usuários, no formato:
Usuário xxxxx percente aos grupos:
-yyyyy
-yyyyy
Prática N. 13
Para cada usuário criar a seguinte arvore de diretórios na posta home (do usuário).~/Faculdade/SistemasOperacionasi
~/Faculdade/LinguagemdeProgramacao
~/Faculdade/InteligenciaArtificial
~/Diversao/Livros
~/Diversao/Trabalhos
~/Diversao/TestesProgramacao
Prática N. 14
Pesquisar na web como usar o comando gzip
Criar um script para compactar a pasta ~ do usuário e salvar em /backup/nomedousuario.gz
Referência
• SILVER, Ellen; LOVE, Robert; ROBBINS, Arnold. Linux: o guia essencial. 5. ed. Porto Alegre: Bookman, 2006.