2010-08-17 17 views
17

Tengo un archivo C ejecutándose en Linux. Imprime algunas líneas en rojo (fallas) y algunas en verde (pasa). Como es de esperar, que utiliza códigos de escape en los estados printf de la siguiente manera:El código C cambia el color del texto del terminal; cómo restaurar los valores predeterminados? Linux

#define BLACK "\033[22;30m" 
#define GREEN "\033[22;31m" 

printf(GREEN "this will show up green" BLACK "\n"); 

Si el NEGRO al final no estaba allí, el texto del terminal seguirá siendo verde para todo. En caso de que no lo haya captado, está bien para una ventana de terminal con un fondo que no sea negro, pero de lo contrario terminará con negro sobre negro. ¡No está bien! Ejecutar el programa tiene este problema, al igual que capturar el resultado en un archivo de texto y luego ver el archivo con "más" o "menos".

¿Hay un código para restablecer los valores predeterminados en lugar de especificar un color al final de la instrucción printf? Esto debe estar en C, pero me interesaría leer sobre otros enfoques.

Actualización: Gracias a todos. Sus respuestas me ayudaron a encontrar información aún más útil en otro lugar. he actualizado mis macros de la siguiente manera (nota 31 es de color rojo y me lo solucionó error tipográfico abajo):

#define RESET_COLOR "\e[m" 
#define MAKE_GREEN "\e[32m" 

printf(MAKE_GREEN "this will show up green" RESET_COLOR "\n"); 

encontré los siguientes enlaces útiles para entender cómo estos códigos de trabajo:

http://www.phwinfo.com/forum/comp-unix-shell/450861-bash-shell-escapes-not-working-via-putty-ssh.html explica qué es esto de escape hacer secuencias, y utilizar ncurses si se necesita portabilidad.

http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-6.html

http://bluesock.org/~willg/dev/ansi.html muestra aún más secuencias de escape; útil para conseguir el cuadro grande

Respuesta

2

tipo reset en el terminal.

Se encontró un binario en Linux y OSX llamado reset.

+0

Ok, no es la respuesta exacta, pero tal vez mirarlo ayuda. – Nils

+1

"restablecer" borra la ventana de la terminal y coloca el mensaje en la parte superior de la pantalla, que no es el efecto que necesito, pero gracias. – jasper77

Cuestiones relacionadas