1. Introdução ao Shell Script
Introdução
O que é o Shell do Linux ?
O que é Shell Script e porquê utilizá-lo?
Programando em Shell
Conceitos básicos.
Como escrever ?
Variáveis
Aritmética
Comandos
Caracteres ”Especiais”
Arquivos
”Conectando” comandos
Filtros
Tomada de Decisão
Laços
Construção de uma aplicação simples.
2. O que é o Shell do Linux ?
É um programa ou um ambiente criado para interação do
usuário com o sistema.
Shell é uma linguagem interpretada que executa comandos
provenientes de arquivos ou digitados pelo usuário.
Não é parte do kernel, mas o utiliza para executar programas.
Existem vários tipos de Shell.
Para saber os que seu sistema possui digite o seguinte
comando no terminal:
cat /etc/shells
Para saber qual Shell está executando no momento digite:
echo $SHELL
3. O que é Shell Script e porquê utilizá-lo?
O que é ?
”É uma série de comandos escritos em um
arquivo de texto.”
Porquê utilizá-lo ?
Criar seus próprios comandos.
Automatizar tarefas do dia-a-dia.
Automatizar tarefas de administração do sistema.
Outros.
4. Conceitos Básicos
Como escrever ?
Use o editor de texto de sua preferência.
Depois de terminado o script, é necessário
configurar as permissões seguindo a seguinte
sintaxe:
chmod permissão nome-do-script
Exemplo: chmod +x seu-script
Para executá-lo podemos usar diversas sintaxes
como:
bash seu-script
sh seu-script
./seu-script
5. Conceitos Básicos
Variáveis
Do sistema: Criadas pelo sistema e são definidas
em letra maiúscula.
Exemplos:
$USERNAME - nome do usuário
$HOME – caminho do diretório 'home'
Definidas pelo usuário: são definidas pela sintaxe:
nome_da_variavel = valor
Devem iniciar com caracteres alfanuméricos ou '_' seguido
de um ou mais caracteres alfanuméricos.
Não são permitidos espaços antes ou depois do '='
Não é permitido o uso de caracteres especiais nos nomes.
6. Conceitos Básicos
Variáveis
Regras para nomeação:
1) O nome deve começar com ”_”+caracteres ou caracteres.
HOME var _var
2) Não colocar espaços após o sinal de igual ao fazer uma atribuição.
var = 0 var= 0 var =0 ERRO!
3) São case-sensitive.
4) É possível definir variáveis nulas(NULL).
5) Não use caracteres especiais ao nomeá-las, exceto ”_”.
7. Conceitos Básicos
Variáveis
Para acessar uma variável é usada a seguinte
sintaxe:
$nome_da_variavel
Exemplo:
# Escrevendo uma variável na tela
clear #para limpar a tela
numero=10
string="PESL"
echo "numero = $numero"
echo "string = $string"
8. Conceitos Básicos
Aritmética
Sintaxe:
`variavel operador1 operador_matematico operador2`
` - crase
Operadores:
+, -, /, *, %
Exemplos:
echo `7+3` #deve aparecer 10 na tela
echo `7-3` #deve aparecer 4 na tela
echo `7*3` #deve aparecer 21 na tela
9. Conceitos Básicos
Comandos
echo – mostra valores ou textos na tela.
Sintaxe: echo [opcao] [string,variável...]
Opções:
-e (habilita os comandos abaixo)
b – espaço
n – nova linha
t – tab
OBS:
` ` - para executar comandos
' ' - o que estiver entre elas não muda
” ” - o que estiver entre elas é tratado como
caracter, exceto e $
10. Conceitos Básicos
Comandos
Status de um script
Para saber o que ocorreu quando o script terminou
é necessário saber o seu status. Para isto usamos
o comando ”$?”
echo $? #colocado no fim do script dará o status do mesmo
Se a saída for ”0”, tudo correu como planejado.
Caso contrário, algum erro ocorreu.
OBS:
Para utilizar mais de um comando de uma só vez,
basta encadeá-los utilizando”;'
Exemplo: comando1;comando2
11. Conceitos Básicos
Comandos
read – lê a entrada do teclado
Sintaxe: read var1, var2, var3
Exemplo:
# Script que lê um nome e escreve na tela
clear
echo ”Digite seu nome:”
read nome
echo ”Olá $nome!”
12. Conceitos Básicos
Caracteres ”Especiais”
São caracteres ”chave” que facilitam algumas tarefas.
Caractere O que faz ? Exemplo
ls * - mostra todos os arquivos
ls arquivo* - mostra tudo que começar com
”arquivo”
* Retorna coincientes. ls *.java - mostra tudo que tiver a extensão
”.java”
ls a*.c - mostra tudo que tive ”a”+qualquer
string no seu nome
ls ? - mostra tudo cujo nome tiver
somente um caractere.
? Retorna coincidentes ls arquivo? - mostra tudo cujo nome
come;ca com ”arquivo” e tiver 8
caracteres
Retorna tudo que coinciir ls [x,y,z]* - mostra tudo que começar
[...] com o conteúdo entre as
chaves.
com ”x”, ”y” ou ”z”
Teste estes comandos no terminal.
13. Conceitos Básicos
Arquivos
Gravando dados
Símbolo de redirecionamento ”>”
Comando > arquivo
Exemplo:
$ ls > meuArquivo
Se ”meuArquivo” existir, será preenchido (sobrescrito)
com o resultado do comando, caso contrário, um
arquivo com este nome será criado e preenchido.
Símbolo de redirecionamento ”>>”
Comando > arquivo
Exemplo:
$ ls >> meuArquivo
Se ”meuArquivo” existir, a saída do comando será
adicionada ao fim do arquivo, caso contrário, um
arquivo com este nome será criado e preenchido.
14. Conceitos Básicos
Arquivos
Lendo dados
Símbolo de redirecionamento ”<”
Comando < arquivo
Exemplo:
$ echo < meuArquivo
A entrada do comando será o conteúdo do arquivo.
Exemplo:
clear #limpa a tela
echo ”Digite seu nome:”
read nome #captura o que foi digitado
echo ”$nome!” > saida #grava o que foi digitado no arquivo "saida"
date >> saida #grava a data no fim do arquivo "saida"
clear #limpa a tela
cat < saida #imprime na tela o conteudo de "saida"
15. Conceitos Básicos
”Conectando” Comandos
O que é isso ?
É quando um comando usa o outro como entrada ou saída.
Exemplos:
$ ls -l | wc -l
A saída do comando ”ls” será informada como parâmetro
para o comando ”wc”, que imprimirá na tela o número
de arquivos neste diretório.
$ ls | sort
A saída do comando ”ls” será informada como parâmetro
para o comando ”sort”, que imprimirá o nome dos
arquivos contidos neste diretório em ordem alfabética.
16. Conceitos Básicos
Filtros
Exemplos:
Use o comando ”ls > out.txt” para criar um arquivo com o a saida do
comando ”ls”.
Teste os comandos abaixo:
$ tail -3 < out.txt > 3ultimas.txt
Gera um arquivo com as 3 últimas linhas contidas
no arquivo ”out.txt”
$ head -n5 < out.txt > 5primeiras.txt
Gera um arquivo com as 5 primeras linhas do
arquivo ”out.txt”
$ head -n10 < out.txt | tail -n5 > linhas_5-10.txt
Gera um arquivo com as linhas 6 a 10 de ”out.txt”
17. Conceitos Básicos
Tomada de Decisão
IF
Sintaxe:
if [ <condição> ]
if [ <condição> ] then
if [ <condição> ] then <comandos>
then <comandos> elif [ <condição> ]
<comandos> else <comandos>
fi <comandos> else
fi <comandos>
fi
Comparações de variáveis
Símbolo Em SHELL Símbolo Em SHELL
== -eq != -ne
> gt < -lt
>= ge <= -lt
18. Conceitos Básicos
Tomada de Decisão
Comparações de Strings
Em SHELL Significado
String1 = String2 As strings são iguais.
String1 != String2 As strings são diferentes.
String Checa se a string é válida (não nula).
-n String Checa se a string é válida e existe.
-z String Checa se a string nula e não existe.
Testes sobre arquivos e diretórios
Em SHELL Significado
-s arquivo Arquivo não vazio.
-f arquivo Arquivo existe ou arquivo existe e não é um diretório.
-w arquivo Arquivo pode ser editado.
-r arquivo Arquivo é somente leitura.
-x arquivo Arquivo é executável.
-d diretorio Diretório existe e não é um arquivo.
19. Conceitos Básicos
Laços
FOR
Sintaxe:
for ( ( <expressão3>; <expressão2>; <expressão3> ) )
do
<comandos>
done
WHILE
Sintaxe:
while ( <condição> )
do
<comandos>
done
20. Construindo uma Aplicação Simples
Objetivo:
Encontrar o arquivo com o nome designado na pasta atual e mostrá-lo na tela.