如何在不使用ncurses的情况下在linuxterminal上设置terminal背景颜色?

我用C编写了一个简单的控制台程序,它使用ANSI转义代码对文本进行着色。

有没有办法将整个terminal的背景临时设置为黑色,默认的字体颜色为浅灰色? 程序结束后可以恢复吗?

我宁愿避免使用ncurses。

Solutions Collecting From Web of "如何在不使用ncurses的情况下在linuxterminal上设置terminal背景颜色?"

可能最简单的方法是使用ANSI设置文本的背景颜色:

例如使用:

echo -e "\e[37m\e[41m" 

会给你一个红色背景上的蓝色文字(你可以用它来测试戏剧性的,容易看到的颜色的效果)。

 echo -e "\e[97m\e[40m" 

将在您的程序期间将前景设置为白色,将背景设置为黑色。

如果你发现你的背景颜色和终端之间有一种丑陋的过渡区域,只需要打印足够多的换行符来擦除整个屏幕。

要在C中使用它,你显然需要printf而不是echo

ANSI转义代码上的维基页面有其他信息。

如何做到这一点取决于用户正在使用的终端。 它可能是ANSI,也可能是VT100,也可能是行式打印机。 ncurses为你抽象这个恐怖。 它使用通常存储在/lib/terminfo/usr/share/terminfo关于如何与不同种类的终端交谈的信息数据库(参见$ TERM的内容以查看您当前正在使用哪一个终端)。

一旦你看这些文件,你可能会想重新考虑不使用ncurses ,除非你有特定的要求,以避免它(嵌入式系统没有足够的存储空间等)