c++ - ensamblador - colores assembler
El código C cambia el color del texto del terminal; ¿Cómo restaurar los valores por defecto? Linux (3)
Tengo un archivo C que se ejecuta en Linux. Imprime algunas líneas en rojo (fallos) y algunas en verde (pases). Como es de esperar, utiliza códigos de escape en las declaraciones de printf de la siguiente manera:
#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. Si no lo atrapó, 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! La ejecución del programa tiene este problema, al igual que capturar la salida en un archivo de texto y luego ver el archivo con "más" o "menos".
¿Hay un código para restaurar los valores predeterminados en lugar de especificar un color al final de la declaració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 otros lugares. Actualicé mis macros de la siguiente manera (la nota 31 es para el rojo y corregí ese 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 funcionan estos códigos:
http://www.phwinfo.com/forum/comp-unix-shell/450861-bash-shell-escapes-not-working-via-putty-ssh.html explica qué hacen estas secuencias de escape y cómo usar ncurses si la portabilidad es necesario
http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-6.html
http://bluesock.org/~willg/dev/ansi.html muestra incluso más secuencias de escape; útil para obtener el panorama completo
Trate de usar:
#define RESETCOLOR "/033[0m"
Eso debería restablecerlo a los valores por defecto.
Puede encontrar más información sobre estos códigos de terminales aquí: http://en.wikipedia.org/wiki/ANSI_escape_code
tipo reset
en el terminal.
Hay un binario encontrado en Linux y OSX llamado reset.
"/033[0m"
Consulte aquí: http://en.wikipedia.org/wiki/ANSI_color