我是否正确,在 inittab 条目中设置终端类型,如下所示:c2:... tty2 linux-m 只是某种信息性任务 - 设置 TERM 变量以通知命令/程序/应用程序系统实际上是哪种终端类型。即使 TERM 将终端描述为单色类型,但当命令(例如将ls --color=always
其输出发送到终端 i)显示颜色时,终端确实能够显示颜色,即使在 inittab 中将其定义为非彩色?
答案1
TERM 确实提供了信息,但许多程序/命令都会尊重它或依赖它。
如何产生颜色在很大程度上取决于终端类型。实际上,我怀疑它们都使用支持颜色的 ANSI(或超集)。
如果 TERM 设置为单声道终端类型,程序必须使用其他信息来决定使用哪种类型的终端颜色控制。如果默认为“ANSI”,那么现在在大多数情况下它都可以正常工作。
如果终端确实是单色的,那么这样做就不好了,命令/程序最好使用单色方法(例如反转、下划线、强度、删除线、闪烁等)代替颜色来在视觉上区分元素。
如果特定程序/命令尊重 TERM(许多程序/命令都尊重),则同样可能会向您报告终端类型不支持您的颜色请求。
看http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html
if(has_colors() == FALSE)
{ endwin();
printf("Your terminal does not support color\n");
exit(1);
}
我还没有检查 ncurses 源代码来了解它has_colors()
是如何实现的,而且我不知道有多少比例(如果有的话)的程序/命令遵循上述模式。
我发现一个非常重要的软件尊重TERM
TERM=xterm-mono robotfindskitten
(mono display)
另一方面,ls
知道我什么时候撒谎。