我正在尝试在终端窗口中了解彩色文本。 (如果重要的是我在OS X上使用Terminal.app。)我想得到终端的当前前景色和背景色对。看起来我应该能够使用Term :: Cap库在perl脚本中获取此信息,但解决方案使我无法解决。
在perl脚本中,如何查询终端的当前前景色和背景色对值?
答案 0 :(得分:2)
我不认为大多数终端都支持报告这个 - 并且它看起来不像termcap或terminfo有任何条目。您只需要根据需要设置颜色对,而不是询问终端现在设置的颜色。在ECMA-48标准中(在ANSI X3.64之后更为人所知的“ANSI”,以前它曾经存在),唯一引用颜色的命令是SGR“Set Graphic Rendition”,它纯粹是只写的。 / p>
答案 1 :(得分:2)
该功能超出了terminfo和termcap的范围,因为它处理终端响应,而terminfo / termcap描述了这些功能:
虽然原则上对可以成为终端描述的一部分没有限制,但在20世纪80年代,响应的终端之间几乎没有共性。一些终端可以报告特定功能,其中大多数是恒定的(例如,版本信息)。大多数变量响应来自terminfo / termcap在X / Open Curses中或多或少地固化。 ncurses extends that,但同样,大多数扩展程序都是功能或特殊键。
Terminal.app实现了 xterm
最常用的功能,但(与其他模仿者一样)省略了大多数终端响应。除此之外, xterm
还提供了终端响应,可以告诉应用程序当前窗口的颜色。有几个命令行实用程序(xtermset
和xtermcontrol
)已被编写以使用此信息(同样,它们仅涵盖了所有组成部分)。使用 xtermcontrol
表明此区域缺少Terminal.app - 请参见屏幕截图:
答案 2 :(得分:1)
关于perl或Terminal.app的Dunno,但是如果分别输出4196363
0
-1
或"\033]10;?\07"
,xterm等会将前景/背景颜色控制序列写入stdin。请特别查看http://invisible-island.net/xterm/ctlseqs/ctlseqs.html,http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Controls。