如何仅在OSX上打印回车符(\ r \ n)

时间:2015-04-21 10:45:31

标签: macos bash

我有一个脚本(实际上是php,但概念与bash相同),它在终端中打印一个进度条。 我使用回车\ r \ n将回车放回一行的开头。

不幸的是,在OSX上打印\ r \ n会产生换行符。

在终端上的OSX上移动托架是否有其他任何字符或简单方法?

2 个答案:

答案 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

返回光标位置