2010-11-15 46 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