Agenda telefônica
Publicado por Helio Campos Mello de Andrade 23/10/2006
[ Hits: 7.868 ]
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 # ########################################
Migrar de MySQL 3.x e 4.x para 5.0 no Debian
Script Iptables para servidor DNS e SSH
Desligar o servidor quando todas as estações estiverem desligadas
Startando jboss e serviços necessários
Shell Script para Linux HOWTOs
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Instalando Zoom Client no Ubuntu 24.04 LTS
Instalando Zoom Client no Fedora 40
Instalando Navegador Firefox no Debian 12
Bloqueando propagandas no Youtube e outros sites com o uBlocker Origin
Configurando static ipv6 em placa de rede eth0[DUVIDA] (2)
Sistema da Coréia do Norte - Red Star OS (59)