Agenda telefônica

Publicado por Helio Campos Mello de Andrade 23/10/2006

[ Hits: 8.313 ]

Download telefone.tgz




Esses scripts funcionam como uma agenda de telefones via linha de comando. O programa funciona com 2 scripts que devem ser colocados no diretório "bin" no home do usuário:

~/bin/telefone
~/bin/funcoes.sh

Ao rodar o script pela primeira vez, o mesmo cria uma estrutura de diretórios no home chamada dados.

~/dados/
~/dados/telefones/
~/dados/ajuda/
~/dados/ajuda/telefone

O usuário tem apenas que, no bash, colocar a seguinte linha no arquivo ~/.bashrc:

export PATH=$PATH:~/bin

  



Esconder código-fonte

########################################
#                  arquivo: ~/bin/telefone                                   #
# Desenvolvedor: Helio Campos Mello de Andrade                 #
########################################
#!/bin/bash

source ~/bin/funcoes.sh

function procuraPessoas() {
   local nome=$1;
   lista=`find ${dirTelefones} -name "*$nome*"`;
   echo -e $lista;
}

function listaPessoas() {
   local nomePessoa;
   local dir;
   local tel;
   local nom;
   
   for nom in $lista; do
      nomePessoa=`basename $nom`;
      
      echo -e -n "Nome: ${VERMELHOCLARO}${nomePessoa}${SEMCOR}";
      dir=`echo ${nom} | sed -r "s/${nomePessoa}//g"`;
      echo -n " encontrado em: ${dir}";
      tel=`cat ${nom}`;
      echo -e "   Telefone: ${VERDECLARO}${tel}${SEMCOR}"
   done
   lista=`find ${dirTelefones} -name "*$1*"`;
}

function insereTelefone() {
   local dir=$1;
   local nome="";
   local tipo="";
   local telefone="";
   local nomeArquivo="";
   
   echo "Dir Atual: ${novoDir}";

   echo -n "Digite o nome da pessoa: ";
   read nome;
   
   echo -n "Digite o tipo de telefone: ";
   read tipo;
   
   echo -n "Digite o numero do telefone: ";
   read telefone;
   
   echo "Inserindo Telefone [${telefone}] pertencente à [${nome}] no diretório [${dir}] "
   nomeArquivo=`echo -n ${nome} | tr -d ' '`;
   nomeArquivo=`echo -n ${tipo}${nomeArquivo} | tr -d ' '`;
   echo "${telefone}" > ${dir}/${nomeArquivo};
}

function insereNovoDir() {
   local dirAtual=$1;
   local nomeDir="";
   echo "Digite o nome do novo diretório: ";
   read nomeDir;
   
   mkdir ${dirAtual}/${nomeDir};
   buscaDiretorio ${dirAtual}/${nomeDir};
}

function buscaDiretorio() {
   local dirAtual=$1;
   local dirNovo="";
   local listaDir="";
   local linha="";
   local localidade="";

   echo "Dir atual é: ${dirAtual}";

   echo "Agora vc deverá escolher de que local a pessoa é:";
   listaDir=`ls -ltr ${dirAtual} | egrep "^d" | sed -r 's/[^:]+:[0-9]{2} //g'`;
   echo "      atual";
   echo "      novo";
   for lista in ${listaDir}; do
      echo "      $lista";
   done
   echo -n "De onde é a pessoa?: ";
   read localidade;
   
   localidade=`echo -n ${localidade} | tr -d '\n'`;
   dirNovo="${dirAtual}/${localidade}";
   
   echo "dirAtual: $dirAtual"
   echo  "dirNovo: $dirNovo"
   case $localidade in
      "atual" )   insereTelefone   ${dirAtual}; exit;;
      "novo"   )   insereNovoDir   ${dirAtual}; exit;;
      *      )   buscaDiretorio    ${dirNovo}; exit;;
   esac
}

# Criando diretorios iniciais.
if [ ! -d ${dirDados} ]; then
   echo "Criando diretorio [${dirDados}]."
   mkdir ${dirDados};
fi

if [ ! -d ${dirTelefones} ]; then
   echo "Criando diretorio [${dirTelefones}]."
   mkdir ${dirTelefones};
fi

if [ ! -d ${dirAjuda} ]; then
   echo "Criando ajuda para script... Isso so eh feito da primeira vez.";
   mkdir ${dirAjuda};
   echo " Este programa \ufffd utilizado para procurar o telefone de uma determinada pessoa." > ${dirAjuda}/telefone;
   echo "" >> ${dirAjuda}/telefone;
   echo "        Comando:  telefone [opcoes|<nome>]" >> ${dirAjuda}/telefone;
   echo "" >> ${dirAjuda}/telefone;
   echo "        Opcoes:" >> ${dirAjuda}/telefone;
   echo "                --testa : testa o programa com todos os usu\ufffdrios." >> ${dirAjuda}/telefone;
   echo "                --help  : imprime o help do programa." >> ${dirAjuda}/telefone;
   echo "" >> ${dirAjuda}/telefone;
   echo "        Se o nome foi fornecido: procura pelo telefone da pessoa." >> ${dirAjuda}/telefone;
   echo "        Se o nome n\ufffdo foi fornecido: pede um nome para procurar." >> ${dirAjuda}/telefone;
   echo "" >> ${dirAjuda}/telefone;
fi

# Verificando a opcao escolhida.
case $1 in
   "--testa" )  testaTelefone ; exit;;
   "--help"  )    imprimeHelp ; exit;;
   "insere"  ) buscaDiretorio ${dirTelefones}; exit;;
   *        ) ;;
esac

if [ $# -gt 0 ]; then
   nome=$1;
else
   echo -e -n "Digite o nome da pessoa: ${AZULESCURO}";
   read nome;
   echo -e "${SEMCOR}"
fi

echo -e "Procurando: ${AZULESCURO}$nome${SEMCOR}"
insereDiretorios;
procuraPessoas $nome;
listaPessoas  $lista;
########################################
#             fim do arquivo: ~/bin/telefone                              #
########################################

########################################
#                  arquivo: ~/bin/funcoes.sh                                #
# Desenvolvedor: Helio Campos Mello de Andrade                 #
########################################
#!/bin/bash

function buscaNomesArquivos() {
   dirBusca=$1;
#   tipo=$2;
   echo -e "${VERMELHOCLARO}$dirBusca $tipo${SEMCOR}";
   return `find $dirBusca | grep -i $tipo`;
}

function imprimeHelp() {
   local nome=`basename $0`;
   echo -e "Imprimindo: $0";
   fold -80 "${dirAjuda}/$nome"
}

function testaTelefone() {
   local nomes;
   local nome;
   echo -e "Testando o programa telefone";
   nomes=`find ${dirTelefones} -ls | egrep -v "^[ ]?[0-9]{1,}[ ]{1,}[0-9][ ]d" | awk '{ print($11); }'`;
   for nome in ${nomes}; do
      echo -e ${nome};
      nome=`basename ${nome}`;
   done
}

function insereDiretorios() {
   dirHome="${HOME}";
   dirBase=${PWD};
   dirDados="${dirHome}/dados";
   dirTelefones="${dirDados}/telefones";
   dirBin="${dirHome}/bin";
   dirAjuda="${dirDados}/ajuda";
}

function subString() {
   string=$1;
   inicial=$2;
   tamanho=$3;
   return `echo $string | awk "{ string=substr($0, '$inicial', '$tamanho'); printf( string ); }"`;
}

function insereCores() {
   vermelhoClaro='\e[0;31m';
   vermelhoEscuro='\e[1;31m';
   VERMELHOCLARO='\e[0;31m';
   VERMELHOESCURO='\e[1;31m';
   azulClaro='\e[0;34m';
   azulEscuro='\e[1;34m';
   AZULCLARO='\e[0;34m';
   AZULESCURO='\e[1;34m';
   cyanClaro='\e[0;36m';
   cyanEscuro='\e[1;36m';
   CYANCLARO='\e[0;36m';
   CYANESCURO='\e[1;36m';
   verdeClaro='\e[0;32m';
   verdeEscuro='\e[1;32m';
   VERDECLARO='\e[0;32m';
   VERDEESCURO='\e[1;32m';
   semcor='\e[0m';
   SEMCOR='\e[0m';
   preto='\e[0;30m';
   PRETO='\e[0;30m';
   cinzaClaro='\e[0;37m';
   CINZACLARO='\e[0;37m';
   cinzaEscuro='\e[0;30m';
   CINZAESCURO='\e[0;30m';
   purpuraClaro='\e[1;35m';
   PURPURACLARO='\e[1;35m';
   purpuraEscuro='\e[0;35m';
   PURPURAESCURO='\e[0;35m';
   marrom='\e[0;33m';
   amarelo='\e[1;33m';
   branco='\e[1;37m';
   BRANCO='\e[1;37m';

   corVermelhoClaro='\\\e[0;31m';
   corVermelhoEscuro='\\\e[1;31m';
   CORVERMELHOCLARO='\\\e[0;31m';
   CORVERMELHOESCURO='\\\e[1;31m';
   corAzulClaro='\\\e[0;34m';
   corAzulEscuro='\\\e[1;34m';
   CORAZULCLARO='\\\e[0;34m';
   CORAZULESCURO='\\\e[1;34m';
   corCyanClaro='\\\e[0;36m';
   corCyanEscuro='\\\e[1;36m';
   CORCYANCLARO='\\\e[0;36m';
   CORCYANESCURO='\\\e[1;36m';
   corVerdeClaro='\\\e[0;32m';
   corVerdeEscuro='\\\e[1;32m';
   CORVERDECLARO='\\\e[0;32m';
   CORVERDEESCURO='\\\e[1;32m';
   corSemCor='\\\e[0m';
   CORSEMCOR='\\\e[0m';
   corPreto='\\\e[0;30m';
   CORPRETO='\\\e[0;30m';
   corCinzaClaro='\\\e[0;37m';
   CORCINZACLARO='\\\e[0;37m';
   corCinzaEscuro='\\\e[1;30m';
   CORCINZAESCURO='\\\e[1;30m';
   corPurpuraClaro='\\\e[1;35m';
   CORPURPURACLARO='\\\e[1;35m';
   corPurpuraEscuro='\\\e[0;35m';
   CORPURPURAESCURO='\\\e[0;35m';
   corMarrom='\\\e[0;33m';
   corAmarelo='\\\e[1;33m';
   corbranco='\\\e[1;37m';
   CORBRANCO='\\\e[1;37m';
}

function imprimeLinha() {
   linha=$1;
   corTeste='${AZUL}';
   cor=`${dirBin}/testaExp "${linha}" "${corTeste}"`;
   corTeste='${SEMCOR}';
   semCor=`${dirBin}/testaExp "${linha}" "${corTeste}"`;
   linha=`echo $linha | sed 's/${VERMELHOCLARO}/'${corVermelhoClaro}'/g'`;
   linha=`echo $linha | sed 's/${VERMELHOESCURO}/'${corVermelhoEscuro}'/g'`;
   linha=`echo $linha | sed 's/${AZULCLARO}/'${corAzulClaro}'/g'`;
   linha=`echo $linha | sed 's/${AZULESCURO}/'${corAzulEscuro}'/g'`;
   linha=`echo $linha | sed 's/${CYANCLARO}/'${corCyanClaro}'/g'`;
   linha=`echo $linha | sed 's/${CYANESCURO}/'${corCyanEscuro}'/g'`;
   linha=`echo $linha | sed 's/${VERDECLARO}/'${corVerdeClaro}'/g'`;
   linha=`echo $linha | sed 's/${VERDEESCURO}/'${corVerdeEscuro}'/g'`;
   linha=`echo $linha | sed 's/${SEMCOR}/'${corSemCor}'/g'`;
   linha=`echo $linha | sed 's/${PRETO}/'${corPreto}'/g'`;
   linha=`echo $linha | sed 's/${CINZACLARO}/'${corCinzaClaro}'/g'`;
   linha=`echo $linha | sed 's/${CINZAESCURO}/'${corCinzaEscuro}'/g'`;
   linha=`echo $linha | sed 's/${PURPURACLARO}/'${corPurpuraClaro}'/g'`;
   linha=`echo $linha | sed 's/${PURPURAESCURO}/'${corPurpuraEscuro}'/g'`;
   linha=`echo $linha | sed 's/${MARROM}/'${corMarrom}'/g'`;
   linha=`echo $linha | sed 's/${AMARELO}/'${corAmarelo}'/g'`;
   linha=`echo $linha | sed 's/${BRANCO}/'${corbranco}'/g'`;

   echo -e ${linha};
}

function ajuda() {

   if [ $# -eq 1 ]; then
      help=$1
      comando=`echo "cat ${dirAjuda}/*${help}*"`;
      $comando;
   else
      imprimeHelp;
   fi
}

insereDiretorios;
insereCores;

########################################
#           fim do arquivo: ~/bin/funcoes.sh                             #
########################################

Scripts recomendados

Script para proteção de pastas ou arquivos

Compartilhamento NAT

Compilação do QMPlay2 no Deepin 20

Script para backup no Oracle

Instalador dos Drivers da NVIDIA para Debian


  

Comentários
[1] Comentário enviado por rgsommer em 12/11/2008 - 14:53h

conseguiria isso pra mim? vlw

Programa Agenda feito em Shell Script (Bourne - Again Shell – bash)
que possua as seguintes funcionalidades:
- inserir dados (nome e telefone);
- listar o arquivo ordenado por nome (crescente e decrescente);
- executar procura por nome; e
- executar procura por telefone.
Nas duas últimas funcionalidades, executar procura por nome e executar procura por
telefone, deve ser feita a verificação da existência do nome ou do telefone e, caso não exista, exibir uma mensagem de telefone ou nome inexistente.

[2] Comentário enviado por alaxricard em 06/06/2010 - 09:07h

Amigo este seu Script ele naum esta pegando muito bem naum amigo.


Contribuir com comentário