Domanda

Come alcuni programmi di modifica whats essere visualizzato sul terminale (per prendere un esempio al caso, il programma 'sl')?Sto pensando di terminale Linux qui, può accadere in altri OS, troppo, non so.Ho sempre pensato che una volta che il testo è stato visualizzato, è rimasto lì.Come si fa a cambiare senza ridisegnare l'intero schermo?

È stato utile?

Soluzione

Molte applicazioni fanno uso di maledizioni biblioteca, o in alcune lingue il legame con esso.

Per la riscrittura di una sola riga, come l'aggiornamento delle informazioni sullo stato di avanzamento, il carattere speciale "di ritorno a capo"spesso specificato dalla sequenza di escape " ", può tornare il cursore all'inizio della riga corrente, permettendo la successiva uscita di sovrascrivere ciò che è stato precedentemente scritto.

Altri suggerimenti

A seconda del terminale che si invia il controllo seuqences.Comune sequenze sono, per esempio, esc[;H per inviare il cursore di una posizione specifica (ad es.Ansi, Xterm, Linux, VT100).Tuttavia, questo può variare con il tipo o il terminale di utente ...maledizioni (in collaborazione con il file terminfo) di avvolgere le informazioni per te.

prova questo script shell

#!/bin/bash
i=1
while [ true ]
    do
            echo -e -n "\r $i"
            i=$((i+1))
    done

l'-n opzioni impedisce il newline ...e il ritorno a capo ...di scrivere di nuovo e di nuovo sulla stessa linea - non scroling o che cosa così mai

Se si interrompe una linea inviati al terminale con un ritorno a capo (' '), invece di un avanzamento riga (' '), si sposta il cursore all'inizio della riga corrente, permettendo al programma per stampare il testo al di sopra di ciò che è stampato prima.Io uso questo di tanto in tanto per i messaggi di stato per la lunga attività.

Se hai bisogno di fare di più terminale di editing di che, utilizzare ncurses o una variante di esso.

Ci sono caratteri che possono essere inviati al terminale che sposta il cursore indietro.Quindi il testo può essere sovrascritto.

C'è una lista qui.Nota il "sposta il cursore di un qualcosa di" linee.

NCurses è un cross-piattaforma di raccolta che consente di disegnare interfacce utente su terminali intelligenti.

Il caporale Permaloso ha risposto come questo è fatto al livello più basso.Per facilitare lo sviluppo del libreria curses dà un più alto livello di controllo che semplicemente l'invio di caratteri per il terminale.

Per costruire su @Caporale Permaloso risposta, ci sono delle librerie che gestisce alcune di queste funzionalità per voi come maledizioni/ncurses

Sono d'accordo con danio, ncurses è la strada da percorrere.Ecco un buon tutorial:

http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top