Pular para o conteúdo

Implementando a famosa hélice ASCII

Simples script que implementa atráves do método POG, a clássica hélice ASCII. Bom para ser utilizado em scripts que realizam tarefas longas e que não reportam informações ao usuário durante esse período.

POG = Programação Orientada a Gambiarras =)

Falou!!! ;)
Sandro Marcell SMarcell
Hits: 8.393 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

Simples script que implementa atráves do método POG, a clássica hélice ASCII. Bom para ser utilizado em scripts que realizam tarefas longas e que não reportam informações ao usuário durante esse período.

POG = Programação Orientada a Gambiarras =)

Falou!!! ;)
Download helice.sh Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Esconder código-fonte

#!/bin/bash --norc
#
# Metodo POG basico para implementar a classica helice ASCII.
#
# Este metodo pode ser utilizado para incrementar scripts que realizam
# operacoes longas, e que nao retornam informacoes durante esse tempo!
#
# Sandro Marcell (sandro_marcell@yahoo.com.br)
# Boa Vista, Roraima - 18/12/2008
#
# Mais detalhes: 'man ascii'
#
# P.S.: POG = 'Programacao Orientada a Gambiarras' =)
PATH="/bin:/usr/bin:/usr/local/bin"

__helice__ ()
{
   # 1 - Executa-se o comando em background:
   sleep 10 > /dev/null 2>&1 & # Usando o sleep como exemplo!
   
   # Tornando o cursor invisivel (opcional!)
   tput civis
   
   # 2 - Checa se o comando em background ainda esta em execucao:
   while [ -d /proc/$! ]
   do
      # 3 - "Monta-se" a helice:
      for i in / - \\ \|
      do
         # Tempo de 'refresh':
         sleep .1

         # Usando a sequencia de escape '\e[1D'
         # para posicionar os caracteres:
         echo -ne "\e[1D$i"
         # O escape '\e[1D' move o cursor uma coluna
         # para esquerda!
      done
   done
   
   # Restaura o cursor *
   tput cnorm
}

# 4 - Finalmente, mostra-se o resultado na tela:
echo -n "Aguarde...  "
__helice__
echo -e "\e[1DOk\nFim do processo em background..."
# Fim
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Dia da semana

Instalação do DBDesigner4

Instalado novas interfaces no Ubuntu 12.04

purge

Script simples para encerrar conexões

#1 Comentário enviado por slackmen em 21/12/2008 - 18:05h
Gostei...
#2 Comentário enviado por SMarcell em 22/12/2008 - 12:36h
Versão "melhorada":

http://www.slackbr.org/forum/viewtopic.php?f=45&p=77979&sid=0a8418d01c7091c8ff11b265f1926e02#p77979

Opa! Valeu pelo comentário cara!

Ah, só complementando algumas informações:

O comando executado em background (que no caso do script, esta sendo executado dentro da função):
--------------------------
__helice__ ()
{
# 1 - Executa-se o comando em background:
sleep 10 > /dev/null 2>&1 & # Usando o sleep como exemplo!
...
}
---------------------------

Pode ser disparado fora dela sem problemas!
---------------------------
# 1 - Executa-se o comando em background:
sleep 10 > /dev/null 2>&1 & # Usando o sleep como exemplo!

__helice__ ()
{
...
}
---------------------------

Fiz do primeiro modo visando principalmente facilitar a didática e entendimento. Mas recomendo que se você for implementar isso em seus scripts, utilize o segundo modo!

=)
#3 Comentário enviado por eduardofraga em 01/01/2009 - 11:00h
Achei legal, vou copiar...

Você sabe onde eu acho um com Barra de progresso?
#4 Comentário enviado por SMarcell em 01/01/2009 - 19:08h
Eh aí Eduardo, beleza cara? Valeu pelo comentário!

Quanto a questão da barra de progresso, ela é um pouco mais específica e sua implementação vai depender do tipo de ação que você esteja querendo "monitorar".

Mesmo assim, olha um exemplo "tosco":

------------------
sleep 10 > /dev/null 2>&1 &
while [ -d /proc/$! ]
do
echo -n "#"
sleep .5
done;
echo " Ok"
------------------

Ah, também tem essa aqui (um programinha bem legal):
http://www.theiling.de/projects/bar.html

---Editado---

Contribuir com comentário

Entre na sua conta para comentar.