Как напечатать новые данные в той же строке?

Привет, ребята, я всегда использую

sudo apt-get install <package-name>

для установки любого пакета, и каждый раз, когда я запускаю эту команду, я наблюдаю одну вещь

Каждый раз, когда она говорит

Downloading some packages (78%)

Эта строка, однажды напечатанная , никогда не меняет свою позицию , но вместо этого она продолжает обновлять себя процентными значениями, в то время как другие вещи изменяют эту линия остается постоянной ! Как они это делают?

Я знаю, что это не типичный вопрос Askubuntu, но как программист мне очень интересно узнать ответ.

enter image description here Спасибо заранее!

6
задан 22 January 2014 в 21:11

2 ответа

Вам, вероятно, нужно посмотреть, что делает echo -ne '\r'.

Вот пример:

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

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

echo -ne '\n'
0
ответ дан 22 January 2014 в 21:11

То, что Джобин сказал правильно, они делают это с возвратом каретки "\ r". Тем не менее, я думаю, что OP искал реальный пример программирования.

Теперь я не на 100% знаком с синтаксисом C / C ++, но вот рабочий пример Python:

Откройте Терминал и введите «python», чтобы начать писать сценарии.

Введите следующую строку кода для строки, как только вы наберете последнюю строку, дважды нажмите клавишу ВВОД и посмотрите, как она работает. Убедитесь, что после части «for i in range (11):» в следующих строках вы ДОЛЖНЫ нажать клавишу TAB, чтобы сделать отступ. Это правильное форматирование Python. Если вы не нажмете TAB, вы получите ошибку.

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()

Так что это ВИД, как терминал делает то, о чем вы спрашивали.

0
ответ дан 22 January 2014 в 21:11

Другие вопросы по тегам:

Похожие вопросы: