Вот пример использования:

  1. Сценарий node.js очищает консоль.
  2. Затем он отправляет некоторые метаданные на консоль. (Имя модуля и слоган. Вроде как заголовок приложения.)

  3. Он отправляет прошлые данные на консоль. (Вроде как начальный контент приложения, который после его выпуска не изменится. По крайней мере, до выхода.)

  4. Он делает то, для чего предназначен, для чего был создан модуль, и также передает это на консоль.

Шаг 4 - это непрерывный процесс. И поэтому вы можете думать о шаге 4 как о часах. Через каждую секунду часы сбрасываются и показывают новое время.

\033c бы нормально, если бы не было шага 1-3. Но они есть, и я могу думать только о том, чтобы снова распечатать все данные.

Это работает, но это не самый производительный код. Итак, есть ли способ очистить вывод шага 4, а затем перепечатать его с изменениями?

Примечание: последняя строка терминала не обязательно является последней строкой программы.

1 ответ1

1

\033c работало бы нормально, если бы не было шага 1-3.

\033 - код управляющего кода ASCII Escape . Я полагаю, что Escape c - это последовательность команд терминала ANSI для сброса терминала.

Возможно, вы можете выполнить CR (возврат каретки), чтобы переместить курсор к левому полю, а затем Escape [ K (очистить до конца строки).

Если выходные данные шага 4 состоят из нескольких строк, необходимо ввести соответствующие команды для перемещения курсора в строку, столбец и очистки до конца экрана.

Поиск "Коды управления терминалами ANSI" должен найти полезный справочный материал.

Мне нужно ... какая-то команда bash

man tput

рассматривать

$ echo aaa bbb ccc `tput cr`xxx
xxx bbb ccc

$ echo aaa bbb ccc `tput cr`xxx `tput el`
xxx

или же

$ echo aaa bbb ccc; echo ddd eee fff
aaa bbb ccc
ddd eee fff

$ echo aaa bbb ccc; echo ddd eee fff; echo `tput cup 23 3` ZZZ
aaa bbb ccc
ddd ZZZ fff

или же

$ echo aaa bbb ccc; echo ddd eee fff; echo `tput cup 22 3` ZZZ `tput ed`
aaa ZZZ

где используются коды возможностей

  • cr = возврат каретки (курсор на левое поле).
  • el = очистить от курсора до конца строки.
  • cup = позиционирование курсора.
  • ed = очистить от курсора до конца экрана.

Эти коды возможностей перечислены в man terminfo .

Если вы хотите знать, что делает tput, вы можете сделать что-то вроде

$ (tput cup 23 3; echo) | cat -v
^[[24;4H

Где ^[ представляет управляющий код Escape (\033).

Это даст вам значения, которые вы можете использовать любым способом, которым вы намеревались использовать ваш \033c

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .