如何在bash中垂直替换控制台输出
问题描述:
我正在使用Bash(cygwin),并且我想实现类似跨越垂直线的进度指示器。它取代了控制台输出并且不会附加到它。它需要看起来像一个动画。如何在bash中垂直替换控制台输出
所以这个输出会出现随时间:
迭代1:
---
---
---
迭代2:
*--
---
---
迭代5:
***
*--
---
诀窍是跨越垂直线。
如果不跨越垂直线,使用回声很容易。我可以使用\ b向后移动空格并覆盖以前的字符:
echo -n -e "\b"
但是,如何向上移动一行并覆盖以前的行。
答
您使用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