<Precedenti | Contenuti | Succ.>
Spostare il cursore
I codici di escape possono essere utilizzati per posizionare il cursore. Questo è comunemente usato per fornire un orologio o qualche altro tipo di informazione in una posizione diversa sullo schermo, come un angolo superiore ogni volta che viene disegnato il prompt. Ecco un elenco dei codici di escape che posizionano il cursore:
Tabella 13-4: Sequenze di fuga del movimento del cursore
Escape Code Action
\033[l;cH Sposta il cursore sulla riga l e colonna c
\033[nA Sposta il cursore in alto n Linee
\033[nB Sposta il cursore in basso n Linee
\033[nC Sposta il cursore in avanti n caratteri
\033[nD Sposta il cursore indietro n caratteri
\033[2J Cancella lo schermo e sposta il cursore nell'angolo in alto a sinistra (riga 0, colonna 0)
\033[K Cancella dalla posizione del cursore alla fine della riga corrente
\033[s Memorizza la posizione corrente del cursore
\033[u Richiama la posizione del cursore memorizzata
Usando i codici sopra, costruiremo un prompt che disegna una barra rossa nella parte superiore dello schermo contenente un orologio (reso in testo giallo) ogni volta che viene visualizzato il prompt. Il codice per il prompt è questa stringa dall'aspetto formidabile:
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\u@\h \W>\$ "
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\u@\h \W>\$ "
Diamo un'occhiata a ciascuna parte della stringa per vedere cosa fa:
Spostare il cursore
Tabella 13-5: Ripartizione della stringa di prompt complessa
Azione in sequenza
Azione in sequenza
\[ Inizia una sequenza di caratteri non stampabili. Lo scopo di ciò è consentire a bash di calcolare correttamente la dimensione del prompt visibile. Senza un calcolo accurato, le funzioni di modifica della riga di comando non possono posizionare correttamente il cursore.
\033[s Memorizza la posizione del cursore. Ciò è necessario per tornare alla posizione del prompt dopo che la barra e l'orologio sono stati disegnati nella parte superiore dello schermo. Tieni presente che alcuni emulatori di terminale non riconoscono questo codice.
\033[0;0H Sposta il cursore nell'angolo in alto a sinistra, che è la riga 0, colonna 0.
\033[0;41m Imposta il colore di sfondo su rosso.
\033[k Cancella dalla posizione corrente del cursore (l'angolo in alto a sinistra) alla fine della riga. Poiché il colore di sfondo ora è rosso, la linea viene cancellata su quel colore creando la nostra barra. Notare che l'azzeramento fino alla fine della riga non cambia la posizione del cursore, che rimane nell'angolo in alto a sinistra.
\033[1;33m Imposta il colore del testo su giallo.
\t Visualizza l'ora corrente. Sebbene questo sia un elemento "stampante", lo includiamo comunque nella parte non stampabile del prompt, poiché non vogliamo che bash includa l'orologio nel calcolo della dimensione reale del prompt visualizzato.
\033[0m Disattiva il colore. Ciò influisce sia sul testo che sullo sfondo.
\033[u Ripristina la posizione del cursore salvata in precedenza.
\] Termina la sequenza di caratteri non stampabili.
<\u@\h \W>\$ Stringa di richiesta.