Очистить половину экрана из командной строки


11

Есть ли какой-нибудь способ очистить терминал, но вместо того, чтобы оставлять подсказку в верхней части экрана, он остается посередине? Похоже, в clearосновном игнорирует все параметры командной строки.

Я думал, что будет какой-то способ сделать это, tputно не могу найти.

Ответы:


12

Вы можете использовать tputдля перемещения курсора на заданную строку на экране, например,

tput cup 11 0

переместить его в двенадцатую строку (значения отсчитываются от нуля).

В том же ключе, вы можете использовать tputдля очистки от этой позиции до конца экрана, используя эту edвозможность. Объединение,

tput cup 11 0 && tput ed

может быть то, что хотел.

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

stty size

это (в большинстве систем) количество строк экрана. Добавляя это к команде:

tput cup $(stty size|awk '{print int($1/2);}') 0 && tput ed

В clearпрограмме отличается от tput ed:

  • он перемещает курсор в исходное положение (вверху слева) и
  • очищает от этой точки до конца экрана.

Предостережение: на некоторых платформах tput edможет не работать из-за проблем, исправленных давно. В этих случаях обновление конфигурации curses / ncurses решит проблему.


на Unix это не очищает текст для меня, но перемещает курсор
Джеймс Оуэрс

1
Похоже, ошибка исправлена ​​десять лет назад. Возможно, пришло время обновить вещи.
Томас Дики

0

Если количество строк нечетное, тогда tput cupочищается вся страница.
написание этого должно исправить это:

tput cup $(($(stty size|awk '{print $1}')/2)) 0 && tput ed

-1

Если вы заинтересованы в очистке нижней части экрана при сохранении остальных, это будет работать:

half=$(stty size | awk '{print int($1/2)-1;}'); for i in `seq ${half}`; do echo '' ; done && tput cup ${half} 0 && tput ed

РЕДАКТИРОВАТЬ: Чтобы уточнить, если вы запустите seq $(stty size | cut -d' ' -f1)другие ответы оставят первую половину вывода, в то время как эта команда покинет вторую половину (то есть, самый последний вывод).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.