2017-01-10 2 views
0

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

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

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

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

Единственное, что я был в состоянии добраться до работы:

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

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

ответ

0

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

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

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

Смежные вопросы