Implementando a famosa hélice ASCII

Publicado por Sandro Marcell 21/12/2008

[ Hits: 8.023 ]

Homepage: http://sanmarcell.wordpress.com

Download helice.sh




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!!! ;)

  



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

Scripts recomendados

Script atualizado para conexão ADSL no Slackware

Conectar rede WIFI pelo terminal

Troca de imagem da tela de bloqueio de usuário no Linux Mint MATE

Instalar splashtop em um pendrive

Reiniciar modem via Shell Script


  

Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts