Agenda telefônica
Publicado por Helio Campos Mello de Andrade 23/10/2006
[ Hits: 8.331 ]
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 #
########################################
Instalador de Programas Essenciais
APACHE - Script para gerenciar usuários do apache
Wrapper do dd com algumas medidas de segurança
Encerrar sessão no terminal com tempo definido
Resetar as configurações do KDE plasma para o padrão
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
O que houve com slackware ??? (12)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)









