是否可以使用 bash 脚本在终端中打印旋转光标?

ael*_*lor 2 unix bash shell

我见过使用c, python,ruby但 bash 的解决方案。我发现的最接近的设计是使用这个 ruby​​ 控制台解决方案

10.times {
  print "/"
  sleep(0.1)
  print "\b"
  print "-"
  sleep(0.1)
  print "\b"
  print "\\"
  sleep(0.1)
  print "\b"
  print "|"
  sleep(0.1)
  print "\b"
}
Run Code Online (Sandbox Code Playgroud)

我想要一个类似的效果。

koj*_*iro 5

Spinners 很好,但如果你真的想要一个可控的进度表,它知道你正在处理的 IO,看看pv。

这是一个又快又脏的微调器。(许多非标准的实现sleep会让你睡几分之一秒。)

重击

spin() {
   local -a marks=( '/' '-' '\' '|' )
   while [[ 1 ]]; do
     printf '%s\r' "${marks[i++ % ${#marks[@]}]}"
     sleep 1
   done
 }
Run Code Online (Sandbox Code Playgroud)

POSIX SH

spin() {
  i=0
  marks='/ - \ |'
  while true; do
    if [ $# -lt 4 ]; then
      set -- "$@" $marks
    fi
    shift $(( (i+1) % $# ))
    printf '%s\r' "$1"
    sleep 1
  done
}
Run Code Online (Sandbox Code Playgroud)