在 inittab 文件中设置终端类型

在 inittab 文件中设置终端类型

我已在文件中将终端类型设置为单色,inittab如下所示:

c2:... tty2 linux-m

但是当我输入带有彩色输出的命令时,例如:

ls --color=always -l

我仍然得到彩色结果。如果终端设置为非彩色(如上文中 inittab 文件中的 tty 定义),情况会怎样?

答案1

仅限终端类型描述使用终端的特定方式。无法保证终端确实会以那种方式运行,也无法保证程序会使用其他信息来操作终端。

在这种情况下,ls程序使用其自己的硬编码数据库,该数据库表明“linux”确实有颜色。

进一步阅读:ncurses FAQ申请被误认为是图书馆用户

答案2

正如之前提到的,这些程序可能会直接输出ANSI 转义序列

随着 256 色查找表在显卡上变得普遍,添加了转义序列以从预定义的 256 种颜色中进行选择:[需要引用]

ESC[ … 38;5;<n> … m Select foreground color
 ESC[ … 48;5;<n> … m Select background color
 0-  7:  standard colors (as in ESC [ 30–37 m)
 8- 15:  high intensity colors (as in ESC [ 90–97 m)
16-231:  6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)

232-255:灰度从黑到白,共 24 级

这一论点也将被类似问题的答案所加强,该问题的标题为在 Unix SE 上禁用终端和 SSH 上的颜色

在您之前针对此主题提出的问题中,您提到您正在使用 xterm。xterm 手册页还列出了-cm禁用 ANSI 转义序列识别的选项。链接问题的答案中也提到了这一点:

-厘米

此选项禁用对 ANSI 颜色变化转义序列的识别。它将 colorMode 资源设置为“false”。

通过设置终端信息,您可以定义终端的功能(根据人terminfo)因此,你所做的相当于告诉ls他们你确定你可以做某些事情,但这并不意味着他们必须以任何方式尊重它。

相关内容