Agenda telefônica
Publicado por Helio Campos Mello de Andrade 23/10/2006
[ Hits: 8.301 ]
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 #
########################################
Gerenciar usuários do OpenLDAP com Sistema ZIMBRA
Instalação dos principais programas para um usuário comum
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático









