xterm-color和xterm-256color有什么区别?

use*_*345 18 linux macos terminal ncurses xterm

在尝试设置终端程序使用颜色时,我遇到了xterm-color和xterm-256color作为选项 - 即您可以将TERM环境变量设置为任一个.

我想知道是否有人可以描述两者之间的区别?

我在我的ubuntu服务器以及我的mac上搜索了文档,但没有找到任何文档.我只能在/ usr/share/terminfo中找到各种二进制文件

Chr*_*age 39

xterm-256color描述Xterm支持256色启用.xterm-color描述了一个支持16种颜色的旧版Xterm分支.xterm-color不推荐使用,因为它描述了Xterm的一个变体,它的功能较少且您不太可能使用它.通常你会想要使用xterm,xterm-16colorxterm-256color.

特别是,xterm-256color从Mac OS X 10.7 Lion开始的终端的默认值是,其次是最佳建议值xterm-16colorxterm(仅描述对8种ANSI颜色的支持).在10.7之前,xterm-color是默认值,因为终端不支持推荐的Xterm terminfo值描述的一些关键功能,例如,背景颜色擦除(BCE),用于切换主/备用屏幕的现代代码,256种颜色.

有时,人们明确设置TERMxterm-color(而不是在Xterm的推荐值)来禁用功能或解决现有的terminfo值之间的不兼容特定的计算机和终端模拟器上使用.

请注意,从技术上讲,终端应该有自己的最新terminfo值,它们准确描述它支持的功能,而不是使用Xterm的值,但是:

  1. 目前还没有最新版本.nsterm代表NeXTSTEP的终端祖先.有人显然nsterm最近已经更新了(过去几年的某个时候),但我不知道是否已经进入了ncurses发行版,并且它可能不完全与10.7中的终端保持同步.
  2. 许多程序和shell自定义脚本显式检查是否$TERM以(或等于)开头xterm.因此,一些用户仍然需要知道使用推荐的Xterm值与终端兼容.

如果您不熟悉terminfo系统,请查看x-man-page:// 5/terminfo手册页.此外,您可以使用该infocmp命令查看当前的terminfo设置或比较两个不同的设置,例如,infocmp xterm-color xterm-256color将显示这两者之间的所有差异.


use*_*476 5

似乎xterm-256color是OS/X上的Terminal.app.差异并不小 - 我在Ubuntu盒子上输入了xterm-color和xterm-256color,并将它们标准化了一些,并且有很多不同之处.我甚至可能会说xterm-256color不再是xterm了.

通常,当您使用特定的终端仿真器时,您需要"只知道"哪个terminfo条目最适合它.它们是匹配对,但有时您可以在vt220终端上使用vt100 terminfo条目.

从好的方面来说,今天几乎所有东西都与vt100兼容.


Tho*_*key 5

根据ncurses FAQxterm-color早已过时:

最初,xterm-color 对应于 20 世纪 90 年代中期的 color_xterm。1996 年被 XFree86 xterm 取代。

终端数据库提供详细信息。它最初的目的是作为通用终端描述,但从一开始就从未成功,因为它与XFree86 xterm不匹配,特别是颜色行为(即背景颜色擦除功能)。现在没有人使用nxterm

xterm -256color终端描述是通过修改颜色行为(添加更多颜色,但不添加背景颜色擦除功能)从 (XFree86) xterm 终端描述构建的。使用infocmp查看差异:

$ infocmp xterm-color xterm-256color |wc -l
122
$ infocmp xterm xterm-256color |wc -l
14
$ infocmp xterm xterm-256color
comparing xterm to xterm-256color.
    comparing booleans.
        ccc: F:T.
    comparing numbers.
        colors: 8, 256.
        pairs: 64, 32767.
    comparing strings.
        initc: NULL, '\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\'.
        oc: NULL, '\E]104\007'.
        rs1: '\Ec', '\Ec\E]104\007'.
        setab: '\E[4%p1%dm', '\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m'.
        setaf: '\E[3%p1%dm', '\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m'.
        setb: '\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.
        setf: '\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.
Run Code Online (Sandbox Code Playgroud)

由于 xterm-color 已经过时,它在很大程度上被忽略了,直到 Apple 的一些(当然是匿名的)开发人员决定将其重用于 Terminal.app(在 10.5 Leopard中),尽管它不太合适。ncurses 中的nsterm -16color描述是由某人(显然是 Apple 外部的)贡献的,以匹配 10.5 的行为。尽管 xterm-color 使用8 种颜色,但人们可能会猜测 nsterm-16color 使用16 种颜色。也许这导致了用户的困惑。无论如何,为 Terminal.app 选择终端描述除了设置TERM环境变量外,对 Terminal.app 没有任何影响,许多应用程序使用环境变量来决定如何使用终端。

有趣的是,尽管 MacOS 用户区的大部分来自 BSD,但它的 ncurses 配置却并非如此。与 BSD 不同,MacOS 有 tic/infocmp 实用程序(尽管 Apple 已经十多年没有更新它了:ncurses 5.7 于2008 年发布)。在 MacOS 的后续版本中,Terminal.app 的开发人员更改了菜单以提供“xterm-256color”而不是“xterm-color”。这并没有改善用户体验,因为使用相应终端描述的终端行为仍然不同。ncurses常见问题解答提到:

此外,据报道,Mac OS X 10.7 使用 xterm-256color 作为默认的 $TERM 值。这在几个方面与 xterm-color 不同,特别是对 bce 的支持。它还与推荐的 nsterm-256color 不同(infocmp 报告有 111 个差异)。