簡體   English   中英

C代碼改變終端文本顏色; 如何恢復默認值? Linux的

[英]C code changes terminal text color; how to restore defaults? Linux

我在Linux上運行了一個C文件。 它以紅色(失敗)打印一些線條,以綠色(通過)打印一些線條。 正如您所料,它在printf語句中使用轉義碼,如下所示:

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

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

如果最后的BLACK不存在,終端文本將繼續為所有內容為綠色。 如果你沒有抓住它,那對於具有非黑色背景的終端窗口來說沒問題,但是否則你最終會得到黑底黑字。 不好! 運行程序有這個問題,捕獲文本文件中的輸出,然后使用“更多”或“更少”查看文件也是如此。

是否有代碼恢復默認值而不是在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顯示更多的轉義序列; 有用的了解大局

嘗試使用:

#define RESETCOLOR "\033[0m"

這應該將其重置為默認值。

有關這些終端代碼的更多信息,請訪問: http//en.wikipedia.org/wiki/ANSI_escape_code

"\033[0m"

見這里: http//en.wikipedia.org/wiki/ANSI_color

在終端中鍵入reset

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM