【问题标题】:command line animation命令行动画
【发布时间】:2012-04-14 11:43:38
【问题描述】:

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

【问题讨论】:

标签: animation command-line printing


【解决方案1】:

通常这是通过打印退格字符 (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()

【讨论】:

    【解决方案2】:

    如前所述,您通常可以使用退格字符 \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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 2015-05-23
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多