¿Cómo algunos programas editan lo que se muestra en el terminal (para elegir un ejemplo al azar, el programa 'sl')? Estoy pensando en la terminal de Linux aquí, puede suceder en otros sistemas operativos también, no sé. Siempre pensé que una vez que se mostraba algún texto, se quedaba allí. ¿Cómo lo cambias sin redibujar toda la pantalla?Redibujar la pantalla en el terminal
Respuesta
Muchas aplicaciones hacen uso de la biblioteca curses, o de algún lenguaje vinculante para ella.
Para reescribir en una sola línea, como actualizar información de progreso, el carácter especial "carriage return", a menudo especificado por la secuencia de escape "\ r", puede devolver el cursor al inicio de la línea actual permitiendo salida posterior a sobrescribe lo que estaba escrito anteriormente allí.
Hay caracteres que pueden enviarse al terminal que mueven el cursor hacia atrás. Entonces el texto se puede sobrescribir.
Hay una lista here. Tenga en cuenta las líneas "mover cursor algo".
Si finaliza una línea enviada al terminal con un retorno de carro ('\ r') en lugar de un salto de línea ('\ n'), moverá el cursor al comienzo de la línea actual, permitiendo que el programa para imprimir más texto encima de lo que imprimió antes. Lo uso ocasionalmente para mensajes de progreso para tareas largas.
Si alguna vez necesita hacer más ediciones de terminal que eso, use ncurses o una variante de las mismas.
Para construir sobre la respuesta de @Corporal delicado, hay bibliotecas disponibles que se encargará de algunas de esta funcionalidad para usted como curses/ncurses
probar este shellscript
#!/bin/bash
i=1
while [ true ]
do
echo -e -n "\r $i"
i=$((i+1))
done
las opciones -n evita el salto de línea. .. y el \ r hace el retorno de carro ... que escribir de nuevo y otra vez en la misma línea - sin scroling o lo que nunca
cabo Susceptible ha respondido a cómo se hace en el nivel más bajo. Para un desarrollo más fácil, el curses library proporciona un mayor nivel de control que el simple envío de caracteres al terminal.
NCurses es una biblioteca multiplataforma que le permite dibujar interfaces de usuario en terminales inteligentes.
Estoy de acuerdo con danio, ncurses es el camino a seguir. Aquí hay un buen tutorial:
Según el terminal envía seuqences de control. Las secuencias comunes son, por ejemplo, esc [; H para enviar el cursor a una posición específica (por ejemplo, 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) envolverá esa información por usted.
- 1. ¿Borrando la pantalla del terminal?
- 2. ¿cómo puedo iniciar el protector de pantalla (y bloquear la pantalla) desde la terminal os x?
- 3. ¿Cómo borro la pantalla en una terminal usando Perl?
- 4. Redibujar el lienzo de HTML5 increíblemente lento
- 5. Cómo obtener acceso al archivo y a la pantalla/terminal
- 6. Formulario de fuerza para redibujar?
- 7. ¿Cómo se puede saber si la sesión de la terminal actual está en la pantalla GNU?
- 8. Terminal serie en emacs
- 9. No se puede utilizar la pantalla de manera eficiente en la Terminal de Mac
- 10. Redibujar/actualizar Itemizedoverlay? (android/google maps api)
- 11. Redibujar UIScrollVer contenido después de cada zoom
- 12. Redibujar histogramas con Crossfilter y D3
- 13. ¿Cómo abrir la Terminal en el último directorio abierto?
- 14. ¿Visualizar Logcat en la Terminal?
- 15. error en el terminal inicia
- 16. Redibujar la subclase de CALayer personalizada en el cambio de propiedad personalizada
- 17. Ocultar el cursor en el terminal remoto
- 18. Escriba el carácter nulo en el terminal
- 19. Redibujar una sola fila en una vista de lista
- 20. Borrando el terminal en Linux con el código C++
- 21. Cómo preservar los colores de emacs de la pantalla de terminal regular a gnu
- 22. ¿Cómo se muestra la información de estado de git en el lado derecho de la terminal?
- 23. contar el número de líneas en la salida del terminal
- 24. Seleccionar texto en la terminal sin usar el mouse
- 25. No se puede cambiar el editor predeterminado en la terminal
- 26. Sublime Text 2 Inicie el archivo ruby en la terminal
- 27. Último comando en el mismo terminal
- 28. Eliminar el historial del terminal en Linux
- 29. ¿Cómo puedo borrar el terminal en Ruby?
- 30. cómo borrar la pantalla en Python
Ahora entiendo por qué ver archivos binarios en 'cat' o' less' rompería mi terminal ... siempre cambiaría el juego de caracteres y tuve que reiniciar, jaja. – krs013