Agenda de Contatos
Publicado por César Blum Silveira 10/11/2004 (última atualização em 11/06/2014)
[ Hits: 14.719 ]
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
Descompactar todos os arquivos RAR de um diretório
Renomear seu pendrive (Debian)
Informaçoes de rede com shell script
Bom treino para iniciados em Shell
shell para matar logins aberto com o mesmo usuario
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (10)
Será que eu deveria apreender C/C++ para desenvolver para Linux? (4)