Borrar la mitad de la pantalla desde la línea de comandos


11

¿Hay alguna forma de borrar el terminal pero en lugar de dejar el mensaje en la parte superior de la pantalla lo deja en el medio? Parece que clearbásicamente ignora todos los parámetros de la línea de comandos.

Pensé que habría alguna forma de hacer esto, tputpero no puedo encontrar una.

Respuestas:


12

Puede usar tputpara mover el cursor a una línea determinada en la pantalla, por ejemplo,

tput cup 11 0

para moverlo a la duodécima línea (los valores cuentan desde cero).

En la misma línea, puede usar tputpara borrar desde esa posición hasta el final de la pantalla, utilizando la edcapacidad. Combinatorio,

tput cup 11 0 && tput ed

podría ser lo que se quería.

Si desea ir a la mitad de la pantalla, el primer número devuelto por

stty size

es (en la mayoría de los sistemas) el número de filas de la pantalla. Agregando eso al comando:

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

El clearprograma difiere de tput ed:

  • mueve el cursor a la posición de inicio (arriba a la izquierda) y
  • se borra desde ese punto hasta el final de la pantalla.

Advertencia: en algunas plataformas tput edpuede no funcionar debido a problemas solucionados hace mucho tiempo. En esos casos, la actualización de la configuración de curses / ncurses solucionará el problema.


en Unix, esto no me borra el texto, pero mueve el cursor
James Owers

1
Suena como un error solucionado hace diez años. Quizás es hora de actualizar las cosas.
Thomas Dickey

0

Si el recuento de líneas es impar, tput cupborra toda la página.
escribirlo así debería arreglar eso:

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

-1

Si está interesado en limpiar la mitad inferior de la pantalla mientras mantiene el resto, esto funcionará:

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

EDITAR: para aclarar, si ejecuta seq $(stty size | cut -d' ' -f1)las otras respuestas, dejará la primera mitad de la salida, mientras que este comando dejará la segunda mitad (es decir, la salida más reciente).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.