Agenda de Contatos

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

[ Hits: 8.695 ]

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

Maior ou Menor (script operadores)

Monitoramento do computador por meio de screenshots

Pesquisa de grupos do sistema por nome de grupo ou gid

AutoLibre

Nome, Uid, Gid, HomeUsuario


  

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 removido 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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts