2010-08-17 62 views
17

我有一個運行在Linux上的C文件。它以紅色(失敗)和綠色(通過)打印一些行。正如你所期望的,它使用轉義在printf語句代碼如下:C代碼改變終端文字顏色;如何恢復默認值? Linux

#define BLACK "\033[22;30m" 
#define GREEN "\033[22;31m" 

printf(GREEN "this will show up green" BLACK "\n"); 

如果在兩端的黑色是不存在,終端文本仍將是綠色的一切。如果你沒有看到它,那麼對於非黑色背景的終端窗口來說沒問題,否則你會以黑底黑字結束。不好!運行程序有這個問題,就像在文本文件中捕獲輸出,然後用「更多」或「更少」查看文件一樣。

是否有代碼可以恢復默認值,而不是在printf語句末尾指定顏色?這需要在C,但我會有興趣閱讀其他方法。

更新: 謝謝大家。您的回覆幫助我在其他地方找到更有用的信息。 我更新了我的宏如下(注31是紅色,我固定低於錯字):

#define RESET_COLOR "\e[m" 
#define MAKE_GREEN "\e[32m" 

printf(MAKE_GREEN "this will show up green" RESET_COLOR "\n"); 

我發現有助於理解以下鏈接如何將這些代碼工作:

http://www.phwinfo.com/forum/comp-unix-shell/450861-bash-shell-escapes-not-working-via-putty-ssh.html解釋了這些逃逸序列,並且如果需要可移植性,則使用ncurses。

http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-6.html

http://bluesock.org/~willg/dev/ansi.html示出了甚至更轉義序列;有用獲得大畫面

回答

2

reset類型。

在Linux和OSX中有一個名爲reset的二進制文件。

+0

好的不是確切的答案,但也許看起來有幫助。 – Nils 2010-08-17 20:16:12

+1

「重置」會清除終端窗口,並將提示放在屏幕的頂部,這不是我需要的效果,但謝謝。 – jasper77 2010-08-18 15:11:22