Cancella metà dello schermo dalla riga di comando


11

C'è un modo per cancellare il terminale ma invece di lasciare il prompt nella parte superiore dello schermo lo lascia nel mezzo? Sembra clearpraticamente ignorare tutti i parametri della riga di comando.

Ho pensato che ci sarebbe stato un modo per farlo, tputma non riesco a trovarne uno.

Risposte:


12

È possibile utilizzare tputper spostare il cursore su una determinata riga nella schermata, ad es.

tput cup 11 0

per spostarlo sulla dodicesima riga (i valori contano da zero).

Sulla stessa linea, è possibile utilizzare tputper cancellare da quella posizione fino alla fine dello schermo, utilizzando la edfunzionalità. combinando,

tput cup 11 0 && tput ed

potrebbe essere quello che si voleva.

Se vuoi andare al segno a metà dello schermo, il primo numero restituito da

stty size

è (sulla maggior parte dei sistemi) il numero di righe dello schermo. Aggiungendolo al comando:

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

Il clearprogramma differisce da tput ed:

  • sposta il cursore nella casa di posizione (in alto a sinistra) e
  • cancella da quel punto fino alla fine dello schermo.

Avvertenza: su alcune piattaforme tput edpotrebbe non funzionare a causa di problemi risolti molto tempo fa. In questi casi, l'aggiornamento della configurazione curses / ncurses risolverà il problema.


su unix, questo non cancella il testo per me, ma sposta il cursore
James Owers

1
Sembra un bug risolto dieci anni fa. Forse è tempo di aggiornare le cose.
Thomas Dickey il

0

Se il conteggio delle righe è dispari, tput cupcancella l'intera pagina.
scrivendolo in questo modo si dovrebbe correggere che:

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

-1

Se sei interessato a cancellare la metà inferiore dello schermo mantenendo il resto, allora funzionerà:

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

EDIT: per chiarire, se si eseguono seq $(stty size | cut -d' ' -f1)le altre risposte lascerà la prima metà dell'output, mentre questo comando lascerà la seconda metà (ovvero l'output più recente).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.