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.
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
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.
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
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.
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 ”_”.
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"
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
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 $
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
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!”
Conceitos Básicos
Caracteres ”Especiais”
 São caracteres ”chave” que facilitam algumas tarefas.
Teste estes comandos no terminal.
Caractere O que faz ? Exemplo
* Retorna coincientes.
ls * - mostra todos os arquivos
ls arquivo* - mostra tudo que começar com
”arquivo”
ls *.java - mostra tudo que tiver a extensão
”.java”
ls a*.c - mostra tudo que tive ”a”+qualquer
string no seu nome
? Retorna coincidentes
ls ? - mostra tudo cujo nome tiver
somente um caractere.
ls arquivo? - mostra tudo cujo nome
come;ca com ”arquivo” e tiver 8
caracteres
[...]
Retorna tudo que coinciir
com o conteúdo entre as
chaves.
ls [x,y,z]* - mostra tudo que começar
com ”x”, ”y” ou ”z”
Conceitos Básicos
 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.
Arquivos
Gravando dados
Conceitos Básicos
 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"
Arquivos
Lendo dados
Conceitos Básicos
 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.
”Conectando” Comandos
Conceitos Básicos
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”
Filtros
Conceitos Básicos
 IF
Sintaxe:
Comparações de variáveis
Tomada de Decisão
Símbolo Em SHELL Símbolo Em SHELL
== -eq != -ne
> gt < -lt
>= ge <= -lt
if [ <condição> ]
then
<comandos>
elif [ <condição> ]
<comandos>
else
<comandos>
fi
if [ <condição> ]
then
<comandos>
else
<comandos>
fi
if [ <condição> ]
then
<comandos>
fi
Conceitos Básicos
 Comparações de Strings
 Testes sobre arquivos e diretórios
Tomada de Decisão
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.
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.
Conceitos Básicos
 FOR
Sintaxe:
 WHILE
Sintaxe:
Laços
for ( ( <expressão3>; <expressão2>; <expressão3> ) )
do
<comandos>
done
while ( <condição> )
do
<comandos>
done
Construindo uma Aplicação Simples
 Objetivo:
 Encontrar o arquivo com o nome designado na pasta atual e mostrá-lo na tela.

Shell Script

  • 1.
    Introdução ao ShellScript  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  Dosistema: 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  Regraspara 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  Paraacessar 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 operador1operador_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  Statusde 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. Teste estes comandos no terminal. Caractere O que faz ? Exemplo * Retorna coincientes. ls * - mostra todos os arquivos ls arquivo* - mostra tudo que começar com ”arquivo” ls *.java - mostra tudo que tiver a extensão ”.java” ls a*.c - mostra tudo que tive ”a”+qualquer string no seu nome ? Retorna coincidentes ls ? - mostra tudo cujo nome tiver somente um caractere. ls arquivo? - mostra tudo cujo nome come;ca com ”arquivo” e tiver 8 caracteres [...] Retorna tudo que coinciir com o conteúdo entre as chaves. ls [x,y,z]* - mostra tudo que começar com ”x”, ”y” ou ”z”
  • 13.
    Conceitos Básicos  Símbolode 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. Arquivos Gravando dados
  • 14.
    Conceitos Básicos  Símbolode 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" Arquivos Lendo dados
  • 15.
    Conceitos Básicos  Oque é 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. ”Conectando” Comandos
  • 16.
    Conceitos Básicos Exemplos:  Useo 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” Filtros
  • 17.
    Conceitos Básicos  IF Sintaxe: Comparaçõesde variáveis Tomada de Decisão Símbolo Em SHELL Símbolo Em SHELL == -eq != -ne > gt < -lt >= ge <= -lt if [ <condição> ] then <comandos> elif [ <condição> ] <comandos> else <comandos> fi if [ <condição> ] then <comandos> else <comandos> fi if [ <condição> ] then <comandos> fi
  • 18.
    Conceitos Básicos  Comparaçõesde Strings  Testes sobre arquivos e diretórios Tomada de Decisão 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. 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  FOR Sintaxe: WHILE Sintaxe: Laços for ( ( <expressão3>; <expressão2>; <expressão3> ) ) do <comandos> done while ( <condição> ) do <comandos> done
  • 20.
    Construindo uma AplicaçãoSimples  Objetivo:  Encontrar o arquivo com o nome designado na pasta atual e mostrá-lo na tela.