Agenda de Contatos

Publicado por Lucas Roberto Xavier de Oliveira 01/11/2007

[ Hits: 7.919 ]

Download agenda.sh




Olá pessoal, segue uma agenda simples porém muito útil.

Espero que gostem!


Abraços.

Lucas Roberto

  



Esconder código-fonte

#!/bin/bash

# arquivos para armazenamento de dados
arquivo=~/.agenda.data
arquivo_antigo=~/.agenda.data.old

#menu
principal () {

   echo ""
   echo ""
   echo "                       Agenda | Lucas Roberto |"
   echo ""
   echo ""
   echo "     selecione a opcao desejada:"
   echo ""
   echo "     a - adicionar contato"
   echo "     e - editar contato"
   echo "     d - apagar contato"
   echo "     l - listar todas as entradas"
   echo "     p - procurar um contato"
   echo "     f - apagar tudo"
   echo "     s - sair"
   echo ""
   echo "          opcao desejada: "
   read opt
   clear

   case $opt in
      a) adicionar ;;
      e) editar ;;
      d) apagar ;;
      l) listar ;;
      p) procurar ;;
      f) formatar ;;
      s) clear ;;
      *) principal ;;
   esac
}

# lista as entradas da agenda
listar () {
   cat $arquivo
   read
   clear   
   principal
}

# adiciona um novo contato
adicionar () {
   echo ""
   echo "     Nome: " ; read nome
   echo "     Telefone: " ; read tel
   echo "     Celular: " ; read cel
   echo "     E-mail: " ; read email
   echo "$nome ->  

         Tel: $tel
              Cel: $cel
              E-mail: $email" >> $arquivo
   clear
   principal
}

# procura por um contato
procurar () {
   echo ""
   echo "     Contato: " ; read pattern
   echo ""
   grep -i $pattern $arquivo
   echo ""
   echo "         Pressione qualquer tecla para retornar ao menu inicial..."
   read
        clear
   principal
}

#apaga um contato
apagar () {
   # preste bem atencao a funcao contida abaixo [ complicado ;) ]

   echo ""
   echo "     Contato: "
   read nome

   echo ""
   echo "     Tem certeza que deseja apagar `cat $arquivo | grep -i $nome | cut -d" " -f1`? (s/n)"
   read confirma
   
   if [ $confirma = "s" ]; then
      # atribui a variavel $linha o numeo da linha
      # que contem o nome
      # primeiro lemos o arquivo, separamos o nome
      # com grep e depois cortamos o numero da linha
      linha=`cat $arquivo | grep -in $nome | cut -d: -f1`
   
      # pega o numero da ultima linha do arquivo
      # fazemos o grep imprimir o arquivo com o numero de
      # linhas, damos um tail com a ultima linha
      # da saida do grep e recortamos o numero da linha
      ult_linha=`grep -n "" $arquivo | tail -n1 | cut -d: -f1`
   
      # gera um novo arquivo atualizado
      linhas_antes=`expr $linha - 1`
      linhas_depois=`expr $ult_linha - $linha`
      mv $arquivo $arquivo_antigo
      head -n $linhas_antes $arquivo_antigo > $arquivo
      tail -n $linhas_depois $arquivo_antigo >> $arquivo
   fi
   
   clear
   principal
}

#edita um contato
editar () {
   
   echo ""
   echo "     Contato: "
   read nome

   echo "     Tem certeza que deseja editar `cat $arquivo | grep -i $nome | cut -d" " -f1`? (s/n)"
   read confirma
   
   if [ $confirma = "s" -o $confirma = "S" ]; then
      echo ""
      grep -i $nome $arquivo
      
      echo ""
      echo ""
      echo "     Nome: " ; read novo_nome
      echo "     Telefone: " ; read tel
      echo "     Celular: " ; read cel
      echo "     E-mail: " ; read email
      
      # atribui a variavel $linha o numeo da linha
      # que contem o nome
      # primeiro lemos o arquivo, separamos o nome
      # com grep e depois cortamos o numero da linha
      linha=`cat $arquivo | grep -in $nome | cut -d: -f1`
   
      # pega o numero da ultima linha do arquivo
      # fazemos o grep imprimir o arquivo com o numero de
      # linhas, damos um tail com a ultima linha
      # da saida do grep e recortamos o numero da linha
      ult_linha=`grep -n "" $arquivo | tail -n1 | cut -d: -f1`
   
      # gera um novo arquivo atualizado
      linhas_antes=`expr $linha - 1`
      linhas_depois=`expr $ult_linha - $linha`
      mv $arquivo $arquivo_antigo
      head -n $linhas_antes $arquivo_antigo > $arquivo
      echo "$novo_      nome -> Tel: $tel | Cel: $cel | E-mail: $email" >> $arquivo
      tail -n $linhas_depois $arquivo_antigo >> $arquivo
   fi
   
   clear
   principal
}

formatar () {
   echo ""
   echo "Tem certeza que deseja apagar todas as entradas da agenda? (s/n)"
   read confirma
   
   if [ $confirma = "s" -o $confirma = "S" ]; then
      rm $arquivo
      touch $arquivo      
   fi
   
   clear
   principal
}

clear
principal

Scripts recomendados

Ler arquivo linha por linha

Script que exibi informações do sistema

Instalador de programas essenciais para seu desktop Ubuntu 12.04

Lista de programas, escolha e instalação

utilitário


  

Comentários
[1] Comentário enviado por minduim em 08/04/2009 - 14:04h

Ola, estou com um problema e gostaria de sua ajuda, veja se é possivel: Como eu faço a converção de uma váriavel string para números?
Obrigado pela atenção.

[2] Comentário enviado por GUSFORNA em 14/11/2011 - 12:27h

Meus parabens ficou muito bom esta agenda

[3] Comentário enviado por alexandrepina em 23/01/2014 - 16:03h

Esse script não seria uma cópia desse? http://www.vivaolinux.com.br/script/Agenda-de-Contatos-1

[4] Comentário enviado por perfection em 19/08/2016 - 16:40h

É com certeza uma cópia do Script: http://www.vivaolinux.com.br/script/Agenda-de-Contatos-1
Isso é uma Vergonha Lucas Roberto Xavier de Oliveira
Copiar o trabalho que outro fez e dizer que é Seu!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts