如何在bash中垂直替换控制台输出

时间:2011-11-30 08:46:33

标签: bash cygwin

我正在使用Bash(cygwin),我希望实现类似于跨越垂直线的进度指示器。它取代了控制台输出,不会附加到它。它需要看起来像一个动画。

所以这个输出会随着时间的推移出现:

迭代1:

---
---
---

迭代2:

*--
---
---

迭代5:

***
*--
---

诀窍是跨越垂直线。

如果不跨越垂直线,则很容易使用回声。我可以使用\ b向后移动一个空格并覆盖以前的字符:

echo -n -e "\b"

但是你如何向上移动并覆盖前一行。

1 个答案:

答案 0 :(得分:7)

使用ANSI转义序列移动光标:

\033[NA   - cursor up N lines
\033[NB   - cursor down N lines
\033[NC   - cursor right N steps
\033[ND   - cursor left N steps

所以

$ echo -e '\033[8Chello'
        hello