Agenda de Contatos
Publicado por César Blum Silveira 10/11/2004 (última atualização em 11/06/2014)
[ Hits: 14.906 ]
Download 1402362331.contatos.sh (versão 2)
Meu primeiro shell-script, uma agenda de contatos. Vc pode adicionar, apagar, editar e procurar nomes. Armazena nomes, telefones, celulares e e-mails.
Versão 2 - Enviado por Vitor Augusto M. Pio em 09/06/2014
Changelog: Alterações:
- Criação do arquivo agenda.data caso ele não exista no começo do programa.
- Mensagem caso não hajam registros.
- Mensagem para cadastro com sucesso.
- Mensagem caso contato não seja encontrado.
- Mensagem contato removido com sucesso.
- Mensagem contato editado com sucesso.
- Mensagem contato não foi encontrado.
- Melhoria em algumas funções (menores).
- Pressione qualquer tecla para retornar ao menu inicial...
Download 1402362331.contatos.sh
#!/bin/bash
#
# contatos.sh criado por César Blum Silveira
#
# Você pode copiar, distribuir, modificar ou fazer
# o que você quiser com este script.
#
# Dúvidas ou comentarios: cesarbs@brturbo.com
#
# arquivos que irão armazenar os dados
arquivo=~/.agenda.data
arquivo_antigo=~/.agenda.data.old
# menu
principal () {
echo ""
echo ""
echo " Agenda"
echo ""
echo ""
echo " O que você quer fazer?"
echo ""
echo " a - adicionar contato"
echo " e - editar contato"
echo " d - apagar contato"
echo " l - listar todas as entradas"
echo " s - procurar um contato"
echo " f - apagar tudo"
echo " q - sair"
echo ""
echo " opção: "
read opt
clear
case $opt in
a) adicionar ;;
e) editar ;;
d) apagar ;;
l) listar ;;
s) procurar ;;
f) formatar ;;
q) clear ;;
*) principal ;;
esac
}
# lista as entradas da agenda
listar () {
cat $arquivo
read
clear
principal
}
# adiciona um novo contato
adicionar () {
echo ""
echo " Nome: " ; read nome
echo " Telefone: " ; read tel
echo " Celular: " ; read cel
echo " E-mail: " ; read email
echo "$nome -> Tel: $tel | Cel: $cel | E-mail: $email" >> $arquivo
clear
principal
}
# procura por um contato
procurar () {
echo ""
echo " Contato: " ; read pattern
echo ""
grep -i $pattern $arquivo
echo ""
echo " Pressione qualquer tecla para retornar ao menu inicial..."
read
principal
}
# apaga um contato
apagar () {
# o raciocionio envolvido nesta funçao é um pouco complicado
echo ""
echo " Contato: "
read nome
echo ""
echo " Tem certeza que deseja apagar `cat $arquivo | grep -i $nome | cut -d" " -f1`? (s/n)"
read confirma
if [ $confirma = "s" ]; then
# atribui à variavel $linha o numeo da linha
# que contem o nome
# primeiro lemos o arquivo, separamos o nome
# com grep e depois cortamos o numero da linha
linha=`cat $arquivo | grep -in $nome | cut -d: -f1`
# pega o numero da ultima linha do arquivo
# fazemos o grep imprimir o arquivo com o numero de
# linhas, damos um tail com a ultima linha
# da saida do grep e recortamos o numero da linha
ult_linha=`grep -n "" $arquivo | tail -n1 | cut -d: -f1`
# gera um novo arquivo atualizado
linhas_antes=`expr $linha - 1`
linhas_depois=`expr $ult_linha - $linha`
mv $arquivo $arquivo_antigo
head -n $linhas_antes $arquivo_antigo > $arquivo
tail -n $linhas_depois $arquivo_antigo >> $arquivo
fi
clear
principal
}
# edita um contato
editar () {
echo ""
echo " Contato: "
read nome
echo " Tem certeza que deseja editar `cat $arquivo | grep -i $nome | cut -d" " -f1`? (s/n)"
read confirma
if [ $confirma = "s" -o $confirma = "S" ]; then
echo ""
grep -i $nome $arquivo
echo ""
echo ""
echo " Nome: " ; read novo_nome
echo " Telefone: " ; read tel
echo " Celular: " ; read cel
echo " E-mail: " ; read email
# atribui à variavel $linha o numeo da linha
# que contem o nome
# primeiro lemos o arquivo, separamos o nome
# com grep e depois cortamos o numero da linha
linha=`cat $arquivo | grep -in $nome | cut -d: -f1`
# pega o numero da ultima linha do arquivo
# fazemos o grep imprimir o arquivo com o numero de
# linhas, damos um tail com a ultima linha
# da saida do grep e recortamos o numero da linha
ult_linha=`grep -n "" $arquivo | tail -n1 | cut -d: -f1`
# gera um novo arquivo atualizado
linhas_antes=`expr $linha - 1`
linhas_depois=`expr $ult_linha - $linha`
mv $arquivo $arquivo_antigo
head -n $linhas_antes $arquivo_antigo > $arquivo
echo "$novo_ nome -> Tel: $tel | Cel: $cel | E-mail: $email" >> $arquivo
tail -n $linhas_depois $arquivo_antigo >> $arquivo
fi
clear
principal
}
# apaga todas as entradas
formatar () {
echo ""
echo "Tem certeza que deseja apagar todas as entradas da agenda? (s/n)"
read confirma
if [ $confirma = "s" -o $confirma = "S" ]; then
rm $arquivo
touch $arquivo
fi
clear
principal
}
# início do programa
clear
principal
Script para Unzipar(com funções)
Atualizar status do Twitter pelo terminal
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
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (14)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









