在运行时确定终端/ TTY背景颜色

Ale*_*lls 5 terminal tty node.js chalk

使用粉笔库对终端进行样式化/着色.

import chalk from 'chalk';
Run Code Online (Sandbox Code Playgroud)

如果我使用:

console.log(chalk.blue('foobar'));
Run Code Online (Sandbox Code Playgroud)

这在具有浅色背景的终端中完全可读,但在具有深色背景的终端中完全不可读.

有没有办法在运行时确定终端的背景颜色?


给出的例子:

"npm notice"日志级别为这个问题的情况:

在此输入图像描述

在黑色上阅读蓝色很难.

NVR*_*VRM 4

以下是关于tty 上下文中的ANSI 转义序列的通用答案。

要通过交换背景/前景来突出显示特定序列,使其在所有配色方案上保持可读性,请使用代码 7 Reverse video

这样就无需事先了解调色板并进行调整。

bash 中的示例,使用反向视频:

echo -e "\033[7mHello world\e[0m"
Run Code Online (Sandbox Code Playgroud)

这可以是链接的、反向视频和红色背景:

echo -e "\033[31;7mHello world\e[0m"
Run Code Online (Sandbox Code Playgroud)

这在任何背景下都始终可读,就像这个 gif 的第二行:

在此输入图像描述

反向视频通常在软件程序中用作视觉辅助工具,以突出显示已做出的选择,以帮助防止描述错误,即对非预期对象执行预期操作。在现代桌面环境中,更常见的做法是将背景更改为其他颜色(例如蓝色),或使用半透明背景来“突出显示”所选文本。在理解 ANSI 转义序列的终端上,使用转义序列 CSI 7 m(等于 SGR 7)激活反向视频功能。 https://en.wikipedia.org/wiki/Reverse_video

来自我自己的回答:How to Change the output color of echo in Linux,这是一个包含大量有关ansi 序列信息的问题。

  • 具体如何用粉笔做到这一点? (2认同)