Agenda telefônica
Publicado por Helio Campos Mello de Andrade 23/10/2006
[ Hits: 8.138 ]
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 # ########################################
Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
Jogo de labirinto feito em shell script
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Proteja seu Linux Mint com o Timeshift: Restaure o sistema mesmo que ele não inicie!
Instalando Google Chrome no Debian 13
Alguém pode me recomendar um editor de textos? (0)
meus dois pen drives não são mais reconhecidos pelo meu PC apos tentar... (1)