Agenda telefônica
Publicado por Helio Campos Mello de Andrade 23/10/2006
[ Hits: 7.996 ]
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 # ########################################
Adicionando Chaves de Repositórios Facilmente
Script para monitoramento de processos em execução no sistema
zswapdeslig.sh - Um "Desligador" de ZSWAP, SWAP em RAM para Sabayon Linux
Configurar o Ubuntu para instalar drivers NVIDIA
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Como ordenar datas corretamente usando o Calc? (2)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (21)