Очистить экран терминала, но сохранить визуальный интервал

Когда я хочу сделать визуальный разрыв после длинного списка строк вывода из команды, которую я обычно запускаю clear чтобы терминал очистил экран, верните подсказку обратно на 0,0, сохраняя при этом историю (против reset).

Проблема в том, что когда я прокручиваю вверх, терминал снова возвращается к длинным строкам без какого-либо разрыва в истории.

У меня была идея "повторить значение пустых строк на экране", выполнив yes '' | head -n $(tput lines), но тогда мой курсор находится внизу экрана. Поэтому я пытаюсь бежать clear но, кажется, удалить пустые строки. Я тоже пробовал tput cup 0 0 но это также удаляет пустые строки (я думаю, "возвращая" пустые строки моего экрана).

Я могу форсировать пустые строки, печатая любой символ с yes вместо пустой строки, или я могу напечатать какой-нибудь символ / сообщение в конце пустых строк. Но сейчас я добавляю мусор.

Единственное, что мне удалось получить на работу:

yes '' | head -n $(($(tput lines) * 2))
tput cup 0 0

Есть ли другой способ или это мой единственный вариант?

1 ответ

По сути, да - вы можете выразить сценарий различными способами, но большинство терминалов не допускают одного аспекта, который можно использовать для улучшения вашего сценария: при прокрутке вверх они не перемещают пустые строки в полосу прокрутки. Так что вы не можете (например) сделать это так:

tput cup $(tput lines)
tput indn $(($(tput lines) * 2))
tput cup 0 0
tput ed

так как пустые строки, которые вы ожидаете от indn (индекс) игнорируются.

Другие вопросы по тегам