Question

Comment certains programmes modifient-ils ce qui est affiché sur le terminal (pour prendre un exemple aléatoire, le programme 'sl')? Je pense au terminal Linux ici, cela peut arriver aussi à d'autres OS, je ne sais pas. J'ai toujours pensé qu'une fois le texte affiché, il restait là. Comment le change-t-on sans redessiner tout l'écran?

Était-ce utile?

La solution

De nombreuses applications utilisent la bibliothèque curses , ou un lien de langue pour il.

Pour réécrire sur une seule ligne, telle que la mise à jour des informations de progression, le caractère spécial & nbsp retour de chariot "souvent spécifié par la séquence d'échappement" \ r ", peut ramener le curseur au début de la ligne en cours, permettant ainsi à la sortie suivante d'écraser ce qui y avait été écrit précédemment.

Autres conseils

En fonction du terminal que vous envoyez aux seuqences de contrôle. Les séquences courantes sont par exemple esc [; H pour envoyer le curseur à une position spécifique (par exemple sur Ansi, Xterm, Linux, VT100). Toutefois, cela variera en fonction du type ou du terminal que l'utilisateur a ... Des curses (associées aux fichiers terminfo) encapsuleront ces informations pour vous.

essayez ce shellscript

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

les options -n empêchent la nouvelle ligne ... et le \ r fait le retour à la ligne ... vous écrivez encore et encore dans la même ligne - pas de scroling ou quoi que ce soit

Si vous terminez une ligne envoyée au terminal avec un retour chariot ('\ r') au lieu d’un saut de ligne ('\ n'), le curseur se placera au début de la ligne en cours, permettant au programme de Imprimez plus de texte par-dessus ce qu'il a imprimé auparavant. J'utilise cela occasionnellement pour les messages de progression de longues tâches.

Si vous avez besoin de modifier davantage le terminal, utilisez ncurses ou une variante de celle-ci.

Certains caractères pouvant être envoyés au terminal déplacent le curseur vers l'arrière. Ensuite, le texte peut être écrasé.

Il existe une liste ici . Notez que le curseur "déplace le curseur quelque chose". lignes.

NCurses est une bibliothèque multiplate-forme qui vous permet de dessiner des interfaces utilisateur sur des terminaux intelligents.

Le caporal Touchy a répondu à cette question au plus bas niveau. Pour faciliter le développement, la bibliothèque de curses offre un niveau de contrôle supérieur à celui du simple envoi de caractères à le terminal.

Pour compléter la réponse de @Corporal Touchy, il existe des bibliothèques qui gèrent certaines de ces fonctionnalités, telles que malédictions / ncurses

Je suis d’accord avec danio, ncurses est la voie à suivre. Voici un bon tutoriel:

http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/< a>

scroll top