SISTEMAS OPERACIONAIS

Shell Script - parte 1

Professora Marcela Santos
profmarcelasantos@gmail.com

O shell


  • O “interpretador de comandos” ou “Shell” é um processo que, não faz parte do sistema operacional, porém faz uso pesado de muitos recursos dele. 

  • O Shell é a interface primária entre o usuário e o S.O. 

  • Quando um usuário efetua logon, o shell é inicializado. 

  • Ao iniciar, o shell apresenta o prompt ($>) no terminal, indicando que ele já está pronto para receber um comando.

shell script

  • Muito mais que um simples interpretador de comandos
  • Lingugem de programação interpretada e poderosa

  • Vamos criar o nosso primeiro script
    • Abra um editor de texto
    • Salve como olamundo.sh
      • Não existe a necessidade da extensão, mas é uma boa prática já que permite identificação dos script

Shell Script

  • Digite as seguintes instruções


#!/bin/bash
echo "Ola mundo"

  • Abra um terminal e tente executar esse script
    • ./olamundo.sh
    • Não funciona pois não demos permissão de execução para ele, para resolver isso faça
      • chmod +x olamundo.sh
    • E volte a executar

comentários

  • Para se fazer um comentário em um script, basta começar a linha com o caractere #.Vamos testar criando o seguinte script e nomeando com meuScript.sh


#!/bin/bash
#vai para o diretorio raiz
cd /
#lista os arquivos com a permissão devido ao parametro l
ls -l
echo "Esta foi a listagem de arquivos e diretorios dentro da raiz"
echo -n "O usuario logado no momento eh "
whoami

variáveis de ambiente

  • O shell é executado em um ambiente que possui algumas definições e valores

  • Esses valores são utilizados pelo próprio shell e outros programas para a configuração.

  • As variáaveis de ambiente são responsáveis por guardar essas informações e podem ser de dois tipos
    • Globais
    • Locais

variáveis de ambiente

  • Comandos para manipulação das variáveis de ambiente
    • echo :  exibe o valor da variável, a variável deve ser precedida de $
    • printenv: lista as variáveis de ambiente
    • export: exporta as variáveis locais
    • unset: desaloca as variáveis


  • Vamos testá-los!!!!
    • Primeiro vamos listar as variáveis de ambiente para poder conhecê-las
    • Depois vamos escrever o seguinte script....

variáveis de ambiente - globais

#!/bin/bash
#Pegando informacoes do usuario
echo "Users: $USER"
echo "Home: $HOME"
echo "UID: $UID"


  • Não esqueçam de dar as permissões corretas para executar o script!!!!

variáveis de ambiente - locais

  • Essas são as variáveis criadas pelo usuário e só existiram no terminal onde foram criadas a não ser que sejam exportadas


  • Para criá-las basta colocar o nome  = valor
    • onde nome é o nome da variável
    • valor é o valor associado a variável
    • Exemplos:
      • nome="Marcela"
      • idade=30


  • Para obter o valor de uma variável é necessário colocar o caractere $ na frente. Vamos ao exemplo

variáveis de ambiente locais

#!/bin/bash
#Teste de variaveis do usuario
idade=30
nome="Marcela Santos"
echo "A $nome tem $idade anos de idade"

variáveis locais


#!/bin/bash
echo "Teste de variaveis de usuario"
echo "---------------------------------"
echo "|                               |"
nome="Marcela"
echo "| O usuario $nome tem UID $UID|"
echo "---------------------------------"

variáveis de ambiente

  • Abra um terminal e digite os comandos referentes as seguintes tarefas:
  1. crie uma variável teste com valor 5
  2. mostre o valor dessa variável
  3. abra um novo terminal
  4. lista os processos em execução
  5. mostre o valor da variável teste
  6. saia do segundo terminal
  7. exporte a variável teste
  8. realize os passos 3 a  6 novamente
  9. desaloque a variável teste

o comando read

  • Para que se possa interagir com o que o usuário digitou no teclado podemos usar o comando read
  • Sintaxe
    • read nomevariavel


#!/bin/bash
variavel="Eu estou logado como usuário $USER"
echo $variavel
echo
variavel2="Meu diretório atual é o `pwd`"
echo $variavel2

operadores de redirecionamento

  • ls >arq
    • Redireciona a saida padrão
  • date >> arq
    • Concatena a saida padrão
  • wc < arq.txt
    • Redireciona a entrada padrão
    • O comando wc faz uma contagem no arquivo de: linhas, palavras e bytes.

operador backtick ou crase

  • Esse operador armazena a saída de um comando em uma variável
  • Sintaxe
    • variavel=`comando` ou variavel=$(comando),


#!/bin/bash
# a crase redireciona a saida para dentro da variavel
dia=`date`
echo "A data é: $dia"


operador crase e redirecionamento

  • Vamos ver um exemplo mais elaborado, no qual é feito uma listagem de arquivos , essa listagem é redirecionada para um arquivo que é salvo com nome log+a data em que a listagem foi feita


#!/bin/bash
#Copiar a listagem de um diretorio para arquivos unicos, de acordo com #data e hora
arq=`date +%d%m%y%H%M`
ls -la /home/marcela_santos >> log.$arq 

estrutura condicional - simples

  • O if em shell script


#!/bin/bash
#exemplo de condicional simples em script
if cd /
then
    echo "diretorio raiz encontrado"
fi

estrutura condicional - composta

#!/bin/bash
#exemplo de condicional simples em script
if ls /home/marcela_santos/teste
then
    echo "diretorio teste encontrado"
else
    echo "diretorio teste n encontrado"
fi

mais um exemplo de if composto


#!/bin/bash
echo -n "Digite o primeiro numero: "
read n1
echo -n "Digite o primeiro numero: "
read n2
if test $n1 -eq $n2
then
    echo "Numero iguais"
fi
   

comparações

  • -eq: Igual
  • -ne :Diferente
  • -gt: Maior
  • -lt :Menor
  • -o: Ou
  • -d Se for um diretório
  • -e Se existir
  • -z Se estiver vazio
  • -f Se conter texto
  • -o Se o usuário for o dono
  • -r Se o arquivo pode ser lido
  • -w Se o arquivo pode ser alterado
Made with Slides.com