Unix 为什么tput中同时存在setf/setb和setaf/setab?

Unix 为什么tput中同时存在setf/setb和setaf/setab?,unix,colors,terminal,terminfo,ansi-colors,Unix,Colors,Terminal,Terminfo,Ansi Colors,我正在尝试使用tput以独立于设备的方式设置终端中的前景色和背景色 如果termcap/terminfo/tput的全部目的是成为设备独立的,为什么有明确使用ANSI控件(setaf/setab)的版本和不使用(不应该)的版本 引用terminfo(5),这反过来又引用了明确表示将分别使用ANSI和非ANSI实现的标准 为什么没有setf/setb,它们总是设置前景色和背景色。我不在乎它是如何完成的,这就是为什么我使用tput 为什么不设置setf/setb,它们总是设置前景色和背景色 其实有两

我正在尝试使用tput以独立于设备的方式设置终端中的前景色和背景色

如果termcap/terminfo/tput的全部目的是成为设备独立的,为什么有明确使用ANSI控件(setaf/setab)的版本和不使用(不应该)的版本

引用terminfo(5),这反过来又引用了明确表示将分别使用ANSI和非ANSI实现的标准

为什么没有setf/setb,它们总是设置前景色和背景色。我不在乎它是如何完成的,这就是为什么我使用tput

为什么不设置setf/setb,它们总是设置前景色和背景色 其实有两个问题

第一部分,为什么有ANSI和非ANSI终端命令需要花费太长的时间来举例,这是没有必要的,因为历史在维基百科上已经解释得很清楚了

第二部分可以自由地重新表述为“有什么区别?”或“我能做些什么?”

差异: 与非ANSI端子相比,ANSI型端子在颜色编号和颜色之间使用另一种映射。例如,其中一个上的黄色代码在另一个上是青色的。有两个不同的映射表。这些事情在维基百科上描述得很好

你能做些什么: 发现您拥有的终端类型,并使用相应的命令。 或者修改您的termcap。
不幸的是,这些解决方案都不是完全通用的。

在unix.SE版本的这个问题上,有一个更好的答案。简而言之,
setf
是旧的,
setaf
(带A表示ANSI)是新的。只有
setaf
支持256色模式。