Uma pequena animação em texto.

Iniciado por AdvancedS17, 01 de Agosto de 2012, 14:17

tópico anterior - próximo tópico

AdvancedS17

Boa tarde.
Pessoal quais comandos posso utilizar para que em um script apareça um ponto final após o outro a cada 1 segundo ou outro caractere qualquer como _ ou -. Estava tentando através de echo, sleep 0.5/1, e clear com | entre eles, outra hora & mas não está do jeito que eu gostaria que ficasse. Preciso de algo parecido com aqueles pontinhos finais que vão aparecendo quando serviços estão sendo carregados na inicialização de distros que mostram em modo texto o que está sendo carregado.
Maçon, apoiador de todas as religiões (de preferência conformistas) e enfocado no cristianismo. Universitários do mundo todo, esqueçam os dogmas, devolvam meu corpo que perdi ao longo dos séculos; só não peço para me tornarem um deus, pois ter uma saúde perfeita já basta. Holandês aqui não tem vez.

irtigor

"\b" pra voltar uma coluna. Ex


#!/bin/bash
printf "[          ]"
i=2
while ((i>1)); do
    j=12
    while ((j>1)); do
        printf "\b"
        ((j--))
    done
    while ((j<11)); do
        ((i%2 == 0)) && printf "o" || printf "ø"
        sleep 1
        ((j++))
    done
    printf "]"
    ((i++))
done

raidicar

A uns tempos atraz tive de fazer um troço meio doido, segue uma parte.
Citar
k=0;
traco=("[---]" "[ \\]" "[ | ]" "[ / ]" "[---]" "[ \\]" "[ | ]" "[ / ]");
espace=""
for i in `seq 42`
do
      m=$(($i%9));
      if [ $m -eq 0 ]; then k=0; fi
      espace="$espace ";
      echo -e -n "      $espace[${traco[$k]}] \r";
      k=$(($k + 1));
      sleep 0.03;
done
clear

Ai fica fácil adaptar qq coisa a partir dele, no caso:

Citar
traco=(. . .. ... .... ..... ...... ....... ........ ......... ..........);
for i in `seq 10`
do
  echo -e -n " $i  ${traco[$i]} \r" 
  sleep 1
done
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

AdvancedS17

#3
Valeu mesmo pelas dicas. De tudo o que vocês me responderam (que foi tudo muito avançado em script) aproveitei somente o retorno com \b utilizando algo bem simples assim:
printf . \b
sleep 0.1
printf . \b
sleep 0.1
printf .
Dessa forma fica aparecendo um ponto a cada 0.1 segundo. Agora só falta eu conciliar isso com o tempo de execução de alguns comandos.
Muito obrigado.
Maçon, apoiador de todas as religiões (de preferência conformistas) e enfocado no cristianismo. Universitários do mundo todo, esqueçam os dogmas, devolvam meu corpo que perdi ao longo dos séculos; só não peço para me tornarem um deus, pois ter uma saúde perfeita já basta. Holandês aqui não tem vez.