Agenda telefônica
Publicado por Helio Campos Mello de Andrade 23/10/2006
[ Hits: 8.020 ]
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 # ########################################
tag-mp3 - Um script para editar e/ou visualizar algumas tags ID3 de arquivos MP3
ShellBase - Templates Profissionais para o seu Shell Script
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Remoção de propaganda com o programa Comskip[AJUDA] (4)
Instalação do drive do adaptador wiffi (5)