如何在不使用ncurses的情况下在linux终端上设置终端背景颜色?

use*_*348 4 c linux console colors

我在C中编写了一个简单的控制台程序,它使用ANSI转义码为其文本着色.

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

我宁愿避免使用ncurses.

Ric*_*ard 6

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

例如使用:

echo -e "\e[37m\e[41m"
Run Code Online (Sandbox Code Playgroud)

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

echo -e "\e[97m\e[40m"
Run Code Online (Sandbox Code Playgroud)

在程序的持续时间内,将前景设置为白色,将背景设置为黑色.

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

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

ANSI转义码上的Wiki页面包含其他信息.