我有一个脚本(实际上是php,但概念与bash相同),它在终端中打印一个进度条。 我使用回车\ r \ n将回车放回一行的开头。
不幸的是,在OSX上打印\ r \ n会产生换行符。
在终端上的OSX上移动托架是否有其他任何字符或简单方法?
答案 0 :(得分:1)
您可以使用ANSI escape characters进行光标移动。
printf $'\033[s'
progress=0
print_progress() { printf "%#$(($1))s" " " | tr ' ' '#' ; }
while [ $progress -lt 100 ]; do
print_progress $progress
printf $'\033[u'
sleep 0.1
((progress++))
done
echo
答案 1 :(得分:1)
不确定OSX上tput的所有选项,但这可能有效
while [[ x -lt 100 ]];do
((x+=10))
tput sc
echo -n $x%
sleep 1
tput el1
tput rc
done
tput sc
保存光标位置
tput el1
清除左侧的行
tput rc
返回光标位置