Visualizza la didascalia dello schermo sulla prima riga del terminale


8

Quando avvio un nuovo terminale, il prompt è sulla prima riga. Dopo aver lavorato per un po '(o aver eseguito un comando che produce un output), il prompt è nell'ultima riga. Ci resterò durante il resto della sessione a meno che non si preme Ctrl- l, corsa clearo reseto qualcosa di simile.

Per ottenere una certa continuità nel lavoro, uso screencon un trucco per visualizzare il nome della sessione nella didascalia (utilizzo l'ultimo con i due screencomandi in .screenrc).

Per evitare sovraccarichi cognitivi ingombrando l'area di lavoro, vorrei che questa didascalia fosse visualizzata nella parte superiore del terminale.

Risposte:


3

Sei fortunato, lo schermo rispetta i comandi di salvataggio e ripristino. Quindi con bash si può fare.

Questo dà istruzioni su come spostare il cursore con speciali sequenze di escape. Puoi scrivere "Hello World!" nell'angolo in alto a sinistra con questo:

echo -e "\033[s\033[2;0HHello World!            \n                        \033[u"

Spiegazione: il personaggio \033[ssalva la posizione corrente del cursore, che è ciò che vogliamo che le dimensioni dei terminali dello schermo b / c possano variare, molto. Quindi \033[2;0sposta il cursore sulla terza riga sul primo carattere (iniziamo a contare nell'angolo in alto a sinistra e con 0). Poi arriva il testo e una piccola illustrazione di ciò che è possibile. Alla fine il codice \033[uriporta il cursore nel punto in cui era \033[sstato emesso.

In questo esempio viene spostato il cursore sulla seconda riga perché quando si emette il comando vengono stampate 2 nuove righe in modo che la terza riga corrente sia la prima riga.

Puoi usarlo insieme alla didascalia della sessione che puoi già ottenere dalla spiegazione che hai già collegato.


2
È possibile utilizzare tputper farlo in modo indipendente dal terminale, senza la necessità di codificare tali codici di escape. Ad esempio:echo -n "$(tput sc)$(tput cup 0 0)----Hello, world----$(tput rc)"
Jim Paris,

Sono sicuro che ogni shell ha un modo di emettere questi personaggi, ma so solo bash :-) Grazie per l'input di tput, non lo sapevo.
Bananguin,

@ user1129682: ho provato screen $SHELL -c 'echo -n "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'e screen $SHELL -c 'screen -X caption always "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'non ho funzionato. Qualche idea?
l0b0

Dipende da cosa vuoi. Se desideri solo il titolo della sessione corrente nella didascalia dello schermo, lo faresti screen -X caption always; screen -X caption string "%t". Se si desidera il titolo corrente nell'angolo in alto a sinistra, è necessario modificare la PS1variabile di ambiente per includere la tputmagia.
Bananguin,

@ l0b0: e leggendolo di nuovo, tput cup 0 0 potrebbe avere il doppio problema di newline, motivo per cui ho inserito il mio testo alla terza riga, non alla prima. hai provato tput cup 2 0 o 0 2 ... non hai ancora letto su tput ...
Bananguin
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.