2010-11-15 48 views
8

我想我的命令行java程序输出彩色文本到unix控制台。我特别在Ubuntu 10.4上使用gnome-terminal。 我能够在终端上获得诸如echo "\033[01;32m"Hello之类的颜色。java:多彩的system.out消息在控制台上

如何用java代码触发此操作?谢谢

+0

我觉得这是对于没有图书馆,但检查本指南的颜色。 http://bashscript.blogspot.com/2010/01/shell-colors-colorizing-shell-scripts.html – ahvargas 2010-11-15 08:40:26

回答

7

如果您不关心终端兼容性,只需将echo替换为System.out.println(即可。例如,

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

我试过'System.out.println(“\”\\ 033 [01; 32m \“Hello”) ;'但它不起作用。颜色前缀消失,但颜色不变。 – artsince 2010-11-15 08:41:56

+2

逃脱太多。就像'System.out.println(“\ 033 [01; 32mHello \ n”);'工作。 – 2010-11-15 08:49:45

+0

哦,这也有效。谢谢! – artsince 2010-11-15 08:59:39

4

文本的颜色是在OS层,所以我认为你可以用JNI调用它。

Try this example

注:使UNIX等价的是,

OR

javacurses也是你的情况有帮助

OR

enigma-shell也很有帮助

+0

这是一个非常丰富的答案。不过,我宁愿选择一个快速简单的解决方案。如使用'Runtime.getRuntime.exec()'方法。 – artsince 2010-11-15 08:54:47

3

这会做的伎俩:

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

然后InputStream的重定向到System.out的是这样的:

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

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

当然,这是可能的,但为什么直接打印字符? – 2016-05-04 16:41:21