анимация командной строки - PullRequest
1 голос
/ 30 марта 2012

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

Ответы [ 2 ]

4 голосов
/ 30 марта 2012

Обычно это делается путем печати символа возврата ( ASCII-код 8 ), а затем следующего символа в последовательности.В большинстве языков программирования вы можете просто использовать \b в строке для этого.

Например, вот код Python для этого:

import time
import sys
sys.stdout.write(' ')
while True:
    for c in ('/', '-', '\\', '|'):
        time.sleep(1)
        sys.stdout.write('\b' + c)
        sys.stdout.flush()
1 голос
/ 30 марта 2012

Как уже упоминалось, вы обычно можете использовать символ backspace, \b, чтобы сделать это. Вот простой пример для bash (поскольку вы не указали платформу, я выбрал одну;)):

#!/bin/bash

spin_states=(- \\ \| /)

function spin {
    echo -n "Working...  "
    for ((i=0; i<$1; i++))
    do
        state=$((i % ${#spin_states[@]}))
        echo -ne "\b${spin_states[state]}"
        sleep .1 # A "real" script would probably do something useful here
    done
    echo
}

spin 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...