我正在尝试使用 tput 以与设备无关的方式在终端中设置前景色和背景色。
如果 termcap/terminfo/tput 的全部目的是独立于设备,为什么会有明确使用 ANSI 控件(setaf/setab)的版本和不(不应该)使用的版本?
该讨论引用了 terminfo(5) ,后者又引用了明确表示将分别使用 ANSI 而不是 ANSI 实现的标准。
为什么不只是 setf/setb 而他们总是设置前景色和背景色。我不在乎它是如何完成的,这就是我使用 tput 的原因!
为什么不只是 setf/setb 而他们总是设置前景色和背景色 实际上是两个问题!
第一部分,为什么有 ANSI 和非 ANSI 终端命令需要很长时间来解释,而且它是不必要的,因为历史在 Wikipedia 上有很好的解释。
第二部分也许可以自由地改写为“有什么区别?” 或“我能做些什么呢?”。
区别: ANSI 类型的终端使用不同于非 ANSI 终端的颜色编号和颜色之间的另一种映射。例如,一个上的黄色代码将是另一个上的青色。只有两个不同的映射表。这些东西在维基百科上描述得很好。
你可以做些什么: 发现你有哪种类型的终端,并使用相应的命令。或修改您的 termcap。不幸的是,这些解决方案都不是完全通用的。