Как заменить консольный вывод вертикально в bash - PullRequest
2 голосов
/ 30 ноября 2011

Я использую Bash (Cygwin), и я хотел бы реализовать что-то вроде индикатора прогресса, который охватывает вертикальные линии.Он заменяет вывод консоли и не добавляет к нему.Это должно выглядеть как анимация.

Таким образом, этот вывод появляется со временем:

Итерация 1:

---
---
---

Итерация 2:

*--
---
---

Итерация 5:

***
*--
---

Хитрость заключается в том, чтобы охватить вертикальные линии.

Эхо легко, если вы не занимаете вертикальные линии.Я могу использовать \ b, чтобы переместиться назад на пробел и переписать предыдущие символы:

echo -n -e "\b"

Но как вы продвигаетесь вверх и перезаписываете предыдущие строки.

1 Ответ

7 голосов
/ 30 ноября 2011

Вы используете escape-последовательность 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...