¿Cómo puedo generar texto en color usando "printf" en Mac OS X y Linux?¿Cómo puedo imprimir en la consola en color de forma cruzada?
Respuesta
Puede usar los códigos de color ANSI. He aquí un ejemplo de programa:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%c[1;31mHello, world!\n", 27); // red
printf("%c[1;32mHello, world!\n", 27); // green
printf("%c[1;33mHello, world!\n", 27); // yellow
printf("%c[1;34mHello, world!\n", 27); // blue
return 0;
}
El 27
es el carácter escape
. Puede usar \e
si lo prefiere.
Hay listas de todos los códigos en la web. Here is one.
Para la mejor portabilidad, consulte la base de datos terminfo. Con cáscara,
colors=(black red green yellow blue magenta cyan white)
for ((i = 0; i < ${#colors[*]}; i++)); do
((j=(i+1)%${#colors[*]}))
printf '%s%s%s on %s%s\n' "$(tput setaf $i)" "$(tput setab $j)" \
"${colors[i]}" "${colors[j]}" "$(tput op)"
done
imprimirá
black on red red on green green on yellow yellow on blue blue on magenta magenta on cyan cyan on white white on black
pero en color.
Otra opción es:
# Define some colors first (you can put this in your .bashrc file): red='\e[0;31m' RED='\e[1;31m' blue='\e[0;34m' BLUE='\e[1;34m' cyan='\e[0;36m' CYAN='\e[1;36m' green='\e[0;32m' GREEN='\e[1;32m' yellow='\e[0;33m' YELLOW='\e[1;33m' NC='\e[0m' #################
Entonces se puede escribir en el terminal:
echo -e "${RED}This is an error${NC}" echo -e "${YELLOW}This is a warning${NC}" echo -e "${GREEN}Everythings fine!${NC}"
no se olvide el $ {NC} al final. NC significa "sin color", lo que significa que después de su oración, volverá al color normal. Si lo olvida, toda la solicitud y los comandos posteriores tendrán el color que especificó (por supuesto, puede escribir 'echo -e' $ {NS} '' para volver a cambiarlo).
Esto no parece funcionar en terminal en mac (OS X v10.9.1) - No lo puse en .bashrc, solo lo definí dentro del shell en la línea de comando, pero el texto se imprimió directamente. – Anand
La pregunta era sobre el comando 'printf', no comandos de terminal. Además, se solicitó una solución multiplataforma, 'poner esto en tu .bashrc' no es eso. – TimZaman
@TimZaman Bueno, técnicamente el OP solicitó una solución "tanto para Mac OS X como para Linux", por lo que ponerlo en .bashrc es exactamente eso. Aunque estoy de acuerdo en que no está respondiendo cómo hacerlo usando "printf". Siento la necesidad de señalar que di mi respuesta como alternativa: "Otra opción es:", en lugar de afirmar que esta era realmente la respuesta. – lugte098
- 1. ¿Cómo puedo imprimir los valores de wchar_t en la consola?
- 2. Cómo imprimir a la consola en GWT
- 3. ¿Cómo imprimir el color/color en python?
- 4. Imprimir texto coloreado en la consola en C++
- 5. Cómo imprimir registros de desensamblaje en la consola de Xcode
- 6. ¿Es posible escribir en la consola en color en .NET?
- 7. ¿Cómo imprimir el valor de la consola en mi Eclipse?
- 8. ¿Cómo puedo imprimir una cadena a la consola en coordenadas específicas en C++?
- 9. Imprimir en consola sin inundar en C++
- 10. cscript - imprimir salida en la misma línea en la consola?
- 11. Evite imprimir después de ejecutar el comando en la consola
- 12. ¿Puedo cambiar el color de fondo de la consola Firebug?
- 13. ¿Cómo cambiar el color de la consola en texto sublime?
- 14. Android: ¿Cómo puedo imprimir una variable en la consola de eclipse?
- 15. Imprimir entero en la consola en el conjunto x86
- 16. ¿Cómo puedo imprimir en la misma línea?
- 17. ¿Alguna manera de imprimir en color con NSLog?
- 18. Salida de consola de color con C++ en Windows
- 19. ¿Cómo puedo probar CanCan en la consola?
- 20. Imprimir excepciones de JavaScript en un QWebView a la consola
- 21. Cómo compilar en forma cruzada C++ - ¿biblioteca con dependencias?
- 22. imprimir cadena de colores a la consola con python
- 23. Cómo imprimir en la consola durante la ejecución del trabajo de MapReduce en hadoop
- 24. Consola MongoDB: ¿imprimir en la consola sin una nueva línea final?
- 25. Cómo imprimir fuente html a la consola con phantomjs
- 26. ¿Hay alguna forma de código de color en la pantalla de la consola del depurador de iPhone en Xcode?
- 27. ¿Puedo hablar con Java para imprimir en la consola bajo Mountain Lion?
- 28. ¿Cómo puedo escribir una salida de color rápida a la consola?
- 29. Imprimir un retorno de carro en Java en las ventanas en la consola
- 30. ¿Cómo imprimir el valor actual del objeto Java en la consola de depuración en Eclipse?
Suponiendo secuencias de escape ANSI, como popularizado por derivados VT100 (VT1xx no tenía color). Y podrías haber usado '" \ 033 "' en vez de '"% c ", 27'. – ephemient
@ephemient, incluso '\ e' trabajado en mi máquina. La terminal de OS X y la mayoría de las aplicaciones de la consola Linux soportan las secuencias de escape de ANSI, así que creo que satisface su pregunta. –
Si recuerdo bien, '\ e' es solo gcc. – Jack