【发布时间】:2012-04-14 11:43:38
【问题描述】:
我经常在命令提示符/shell 中看到由 -、/ 和 \ 组成的旋转动画。这种类型的打印会简单地覆盖已经存在的任何内容,也用于显示使用命令行应用程序下载内容的进度。 这是怎么做到的?
【问题讨论】:
-
您指的是哪个操作系统?在 Windows/Unix 命令行中可能会有所不同。
标签: animation command-line printing
我经常在命令提示符/shell 中看到由 -、/ 和 \ 组成的旋转动画。这种类型的打印会简单地覆盖已经存在的任何内容,也用于显示使用命令行应用程序下载内容的进度。 这是怎么做到的?
【问题讨论】:
标签: animation command-line printing
通常这是通过打印退格字符 (ASCII code 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()
【讨论】:
如前所述,您通常可以使用退格字符 \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
【讨论】: