我有一個運行在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示出了甚至更轉義序列;有用獲得大畫面
感謝您的鏈接。 – CSharper 2012-05-10 08:29:05