Очистіть половину екрана з командного рядка


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:

  • він переміщує курсор у домашнє положення (лівий верхній) та
  • знімається з цієї точки до кінця екрана.

Caveat: на деяких платформах tput edможе не працювати через проблеми, виправлені давно. У цих випадках оновлення конфігурації curses / ncurses виправить проблему.


на unix це не очищує текст для мене, але переміщує курсор
James Owers

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

EDIT: Для уточнення, якщо запустити seq $(stty size | cut -d' ' -f1)інші відповіді, залишиться перша половина результату, тоді як ця команда залишить другу половину (тобто останній вихід).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.