2010-11-15 18 views
8

Me gustaría que mi línea de comando java programa para enviar textos de color en la consola de Unix. Estoy específicamente usando gnome-terminal en Ubuntu 10.4. Puedo obtener colores con algo como echo "\033[01;32m"Hello en el terminal.java: colorful system.out mensajes en la consola

¿Cómo puedo activar esto con el código de java? Gracias

+0

creo que no hay ninguna biblioteca para que, pero echa esta guía de colores. http://bashscript.blogspot.com/2010/01/shell-colors-colorizing-shell-scripts.html – ahvargas

Respuesta

7

Si no le importa la compatibilidad del terminal, simplemente reemplace echo con System.out.println( arriba. Por ejemplo,

System.out.println("\033[01;32mHello\n"); 
+0

Intenté 'System.out.println (" \ "\\ 033 [01; 32m \" Hola ") ; 'pero no funcionó ... El prefijo de color desaparece, pero el color no cambia. – artsince

+2

Demasiados escapes. Algo así como 'System.out.println (" \ 033 [01; 32mHello \ n ");' funciona. –

+0

Oh, eso también funciona. ¡Gracias! – artsince

4

El color del texto está en la capa del SO, así que creo que puede hacerlo mediante la llamada JNI.

Try this example

Nota: hacer UNIX equivalente de que,

O

javacurses también es útil en su caso

O

enigma-shell es también útil

+0

Esta es una respuesta muy informativa. Sin embargo, prefiero ir a una solución rápida y simple para este. como usar el método 'Runtime.getRuntime.exec()'. – artsince

3

Esto haría el truco:

Process p = Runtime.getRuntime().exec("echo -e \"\\033[01;32m\"Could Not Add The Task!");

continuación, redirigir la flujoEntrada en el System.out así:

 BufferedReader stdInput = new BufferedReader(new 
      InputStreamReader(p.getInputStream())); 

     while ((s = stdInput.readLine()) != null) { 
      System.out.println(s); 
     } 
+0

Bueno, sin duda, es posible, pero ¿por qué imprimir los caracteres directamente? –

Cuestiones relacionadas