Agenda telefônica
Publicado por Helio Campos Mello de Andrade 23/10/2006
[ Hits: 8.126 ]
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
######################################## # 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 # ########################################
Listar o número de arquivos de um diretório
Inicializando os serviços de OmniBus
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Aprendendo mais sobre Linux com livro (6)
Procrastinação e autossabotagem são problemas muito comuns na sociedad... (6)