Como imprimir novos dados na mesma linha?

6

Olá pessoal, eu sempre uso

sudo apt-get install <package-name>

para instalar qualquer pacakge e toda vez que eu executar este comando eu observo uma coisa

Toda vez que diz

Downloading some packages (78%)

Esta linha, uma vez impressa, nunca muda de posição , mas continua a atualizar-se com valores percentuais. enquanto outras coisas estão mudando , esta linha permanece constante ! Como eles fazem isso?

Eu sei que esta não é uma pergunta típica do Askubuntu, mas como programador estou muito interessado em descobrir a resposta.

Obrigado de antemão!

    
por Null pointer 22.01.2014 / 17:50

2 respostas

9

Você provavelmente precisa ver o que o echo -ne '\r' faz.

Aqui está um exemplo:

echo -ne 'Downloading 1%\r'
sleep 1

echo -ne 'Downloading 100%\r'
sleep 1

echo -ne '\n'
    
por jobin 22.01.2014 / 18:02
0

O que Jobin disse está correto, eles fazem isso com o retorno de carro "\ r". No entanto, acho que o OP estava procurando por um exemplo de programação do mundo real.

Agora, não estou 100% familiarizado com a sintaxe do C / C ++, mas aqui está um exemplo funcional do Python:

Abra um Terminal e digite "python" para iniciar o script.

Digite a linha de código a seguir para a linha, depois de digitar a última linha, pressione a tecla ENTER duas vezes e observe-a funcionar. Certifique-se após a parte "para eu na faixa (11):", nas próximas linhas você deve pressionar a tecla TAB para recuar. É a formatação adequada do Python. Se você não pressionar a tecla TAB, receberá um erro.

import sys
import time
for i in range(11):
    time.sleep(1)
    i=i*10
    sys.stdout.write("\rDownload is %d%% complete!" %i)
    sys.stdout.flush()

Então é assim que o terminal faz o que você perguntou.

    
por user235978 22.01.2014 / 19:36

Tags