Animation 命令行动画

Animation 命令行动画,animation,command-line,printing,Animation,Command Line,Printing,我经常在命令提示符/shell中看到由-、/和\组成的旋转动画。这种类型的打印只会覆盖已经存在的内容,也用于显示使用命令行应用程序下载内容的进度。 这是怎么做到的 通常通过打印一个退格字符,然后打印序列中的下一个字符来完成。在大多数编程语言中,您只需在字符串中使用\b即可 例如,下面是一些Python代码: import time import sys sys.stdout.write(' ') while True: for c in ('/', '-', '\\', '|'):

我经常在命令提示符/shell中看到由-、/和\组成的旋转动画。这种类型的打印只会覆盖已经存在的内容,也用于显示使用命令行应用程序下载内容的进度。
这是怎么做到的

通常通过打印一个退格字符,然后打印序列中的下一个字符来完成。在大多数编程语言中,您只需在字符串中使用\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()

通常这是通过打印一个退格字符,然后打印序列中的下一个字符来完成的。在大多数编程语言中,您只需在字符串中使用\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()

如前所述,您通常可以使用backspace char,\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

如前所述,您通常可以使用backspace char,\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

你指的是哪个操作系统?在Windows/Unix命令行中可能会有所不同。您所指的操作系统可能重复?在Windows/Unix命令行中可能会有所不同