console - comandos - impresión de la consola sin desplazamiento
clusvcadm (7)
hola chicos vi aplicaciones de consola imprimir colores y aplicaciones vistos como ffmpeg imprimir texto sobre sí mismo en lugar de una nueva línea. ¿Cómo imprimo sobre una línea existente? Quiero mostrar archivos fps en la aplicación de mi consola, ya sea en la parte superior o inferior, y tengo printfs regulares para ir allí y desplazarme normalmente
-edit- Necesito esto para Windows, pero esto tiene que ser multiplataforma, así que eventualmente tendré una implementación de Linux y mac
Dependiendo de la plataforma en la que esté desarrollando, probablemente haya una API más poderosa que podría usar, en lugar de códigos de control ASCII antiguos.
Por ejemplo, si está trabajando en Win32, puede manipular directamente el búfer de la pantalla de la consola.
Un buen lugar para comenzar podría estar aquí http://msdn.microsoft.com/en-us/library/ms683171(VS.85).aspx
He estado buscando funciones / API similares que me permitirían acceder a la consola como algo más que una secuencia de texto para otras plataformas. Aún no he encontrado nada, pero una vez más, no he estado buscando tan duro.
Espero eso ayude.
Echa un vistazo a ncurses. Tiene enlaces para la mayoría de los lenguajes de scripting.
El número de carácter ASCII 8 (AKA Ctrl-H, BS o Retroceso) te permite hacer una copia de seguridad de un personaje. El número ASCII de carácter 13 (AKA Ctrl-M, CR o retorno de carro) devuelve el cursor al inicio de la línea.
Si trabajas en C prueba putchar(8);
y putchar(13);
Hay dos posibilidades simples que funcionan tanto en Linux como en Windows, pero solo para una línea:
printf("/b");
volverá para un personaje, por lo que puede contar cuántos caracteres desea retroceder y disparar esto en un bucle, o sabe que solo escribe n números y lo hace como
printf("/b/b/b/b/b/b/b/b/b/b");
-
printf("text to be overwritten by next printf/r");
esto devolverá el cursor al comienzo de la línea, por lo que cualquier impresión siguiente lo sobreescribirá. Asegúrese de escribir una cadena de la misma longitud o más larga para que la sobrescriba por completo.
Si desea reescribir varias líneas, no hay nada tan portátil como ncurses , hay muchas posibilidades en prácticamente todos los sistemas operativos, y no tiene que preocuparse por las diferencias ANSI.
edit: un enlace agregado a la página de ncurses en wikipedia, ofrece una gran introducción e introducción, así como una lista de enlaces y tal vez una traducción a su idioma preferido
Puedes usar Ncurses -
ncurses
paquetencurses
es una biblioteca de subrutinas para pintura de pantalla independiente del terminal y manejo de eventos de entrada que presenta un modelo de pantalla de alto nivel al programador, ocultando las diferencias entre los tipos de terminales y optimizando automáticamente la salida para cambiar una pantalla completa de texto a otra
Puede usar ''/r''
lugar de ''/n''
.
La magia de los colores, la ubicación del cursor y bliking, etc. están dentro de los códigos de escape de ANSI . Cualquier consola de texto capaz de manejar códigos ANSI puede usarlos simplemente imprimiéndolos en la consola (es decir, mediante echo en un script bash o función printf () en C).
Los terminales Unix son compatibles con las secuencias de escape ANSI y el mundo de Windows utilizado para respaldarlos en los viejos días de MS-DOS, pero el soporte de la consola multibyte puso fin a esto. Hay más información aquí . Sin embargo, hay otras maneras de salir de la impresión de secuencias ANSI disponible en Windows . Además, si tiene Cygwin instalado en su máquina de Windows, los códigos ANSI funcionan tan bien como en cualquier terminal Unix.
Muchas personas mencionan la biblioteca de Ncurses que es el estándar de facto para cualquier aplicación basada en texto tipo gui. Lo que hace esta biblioteca es ocultar todas las diferencias de terminal (sabores de Windows / Unix) para representar la misma información lo más idéntica posible en todas las plataformas, aunque desde mi propia experiencia te digo que esto no siempre es cierto (es decir, marcos de ventanas de texto típicos) cambiar porque los caracteres especiales no están disponibles en todas las codificaciones de caracteres). La contraparte de usar ncurses es que es una API completa y es mucho más difícil comenzar con ella que simplemente escribir algunas secuencias de escape de ANSI para cosas simples como cambiar el color de la fuente, limpiar la pantalla o mover el cursor hacia atrás al azar. posición.
En aras de la exhaustividad, pego un ejemplo del uso de la secuencia ANSI en Linux que cambia el mensaje a azul y muestra la fecha:
PS1="/[/033[34m/][/$(date +%H%M)][/u@/h:/w]$ "