Pregunta

¿Cómo editan algunos programas lo que se muestra en el terminal (para elegir un ejemplo aleatorio, el programa 'sl')?Estoy pensando en la terminal de Linux aquí, puede suceder también en otros sistemas operativos, no lo sé.Siempre pensé que una vez que se mostraba algún texto, permanecía allí.¿Cómo se cambia sin volver a dibujar toda la pantalla?

¿Fue útil?

Solución

Muchas aplicaciones hacen uso de la maldiciones biblioteca, o algún idioma vinculado a ella.

Para reescribir en una sola línea, como actualizar información de progreso, el carácter especial "retorno de carro", a menudo especificado por la secuencia de escape " ", puede devolver el cursor al inicio de la línea actual permitiendo que la salida posterior sobrescriba lo que se escribió anteriormente allí.

Otros consejos

Dependiendo del terminal envías secuencias de control.Las secuencias comunes son, por ejemplo, esc[;H para enviar el cursor a una posición específica (p. ej.en Ansi, Xterm, Linux, VT100).Sin embargo, esto variará según el tipo o terminal que tenga el usuario…curses (junto con los archivos terminfo) empaquetarán esa información por usted.

prueba este shellscript

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

las opciones -n evitan la nueva línea...y el regresa el carro...escribes una y otra vez en la misma línea, sin desplazamiento ni nada parecido

Si termina una línea enviada al terminal con un retorno de carro (' ') en lugar de un avance de línea (' '), moverá el cursor al principio de la línea actual, permitiendo que el programa imprima más texto. por encima de lo que imprimió antes.Lo uso ocasionalmente para mensajes de progreso de tareas largas.

Si alguna vez necesita realizar más ediciones de terminal que eso, use maldiciones o una variante del mismo.

Hay caracteres que se pueden enviar al terminal y que hacen retroceder el cursor.Entonces el texto se puede sobrescribir.

hay una lista aquí.Tenga en cuenta las líneas "mover el cursor a algo".

NCurses es una biblioteca multiplataforma que le permite dibujar interfaces de usuario en terminales inteligentes.

El cabo Touchy ha respondido cómo se hace esto en el nivel más bajo.Para un desarrollo más fácil el biblioteca de maldiciones ofrece un mayor nivel de control que simplemente enviar caracteres al terminal.

Para aprovechar la respuesta de @Corporal Touchy, hay bibliotecas disponibles que manejarán algunas de estas funciones por usted, como maldiciones/maldiciones

Estoy de acuerdo con danio, ncurses es el camino a seguir.Aquí tienes un buen tutorial:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top