如何用shell中的echo或printf覆盖多行?

时间:2015-02-11 21:07:40

标签: string shell replace printf overwrite

我有一些shell函数,一个在多行上绘制一些ASCII艺术作品,例如:

printf %s '
______________
||__________||

'
sleep 1
clear
printf %s '
______________
||__________||
      ||
      ||
      ||

'
sleep 1
clear
printf %s '
______________
||__________||
      ||
      ||
      ||
||‾‾‾‾‾‾‾‾‾‾||
‾‾‾‾‾‾‾‾‾‾‾‾‾‾
'

有没有办法在不清除屏幕的情况下覆盖字符串?我已经尝试在每一行和最后一行使用\ r \ n,但这似乎只是替换了一行字符串。

1 个答案:

答案 0 :(得分:2)

这完全取决于您的终端。许多终端允许发送转义序列将光标移动到原位。这可以作为terminfo(1)命令

使用
tput home
printf 'Cursor now home\n'

如果有,请查看man terminfo。如果没有,您需要告诉我们您的TERM环境变量(echo $TERM)的价值。