Agenda telefônica
Publicado por Helio Campos Mello de Andrade 23/10/2006
[ Hits: 8.234 ]
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 #
########################################
Instalação Android Studio no Linux
Tocar listas de músicas usando mpg123 e kdialog ou Xdialog
Monta e desmonta o CD-ROM automaticamente
Script para monitorar os 10 processos que mais consomem CPU e Memória
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Preciso recuperar videos *.mp4 corrompidos (12)
Instalação dualboot Windows 11 e Debian 13 (12)









