Очистить экран терминала, но сохранить визуальный интервал
Когда я хочу сделать визуальный разрыв после длинного списка строк вывода из команды, которую я обычно запускаю 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
(индекс) игнорируются.