Agenda de Contatos
Publicado por Lucas Roberto Xavier de Oliveira 01/11/2007
[ Hits: 8.513 ]
Olá pessoal, segue uma agenda simples porém muito útil.
Espero que gostem!
Abraços.
Lucas Roberto
#!/bin/bash # arquivos para armazenamento de dados arquivo=~/.agenda.data arquivo_antigo=~/.agenda.data.old #menu principal () { echo "" echo "" echo " Agenda | Lucas Roberto |" echo "" echo "" echo " selecione a opcao desejada:" echo "" echo " a - adicionar contato" echo " e - editar contato" echo " d - apagar contato" echo " l - listar todas as entradas" echo " p - procurar um contato" echo " f - apagar tudo" echo " s - sair" echo "" echo " opcao desejada: " read opt clear case $opt in a) adicionar ;; e) editar ;; d) apagar ;; l) listar ;; p) procurar ;; f) formatar ;; s) 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 clear principal } #apaga um contato apagar () { # preste bem atencao a funcao contida abaixo [ 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 a 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 a 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 } 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 } clear principal
Gerando logs para arquivos sem sobrescrever
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Aplicativo simples para gravar tela
Quebra de linha na data e hora no Linux Mint
Como fazer boot em img do debian 12.img da web? (1)
trocar linhas [RESOLVIDO] (11)
Firefox não abre em usuário não administradores (2)