我想了解終端窗口中的顏色文本。 (萬一它很重要我在OS X上使用Terminal.app)我想獲取終端當前的前景和背景顏色對。看起來我應該可以使用Term :: Cap庫在perl腳本中獲得此信息,但解決方案無法解決。在Perl中獲取當前的終端顏色對
在perl腳本中,我將如何查詢終端當前的前景色和背景色對值?
我想了解終端窗口中的顏色文本。 (萬一它很重要我在OS X上使用Terminal.app)我想獲取終端當前的前景和背景顏色對。看起來我應該可以使用Term :: Cap庫在perl腳本中獲得此信息,但解決方案無法解決。在Perl中獲取當前的終端顏色對
在perl腳本中,我將如何查詢終端當前的前景色和背景色對值?
的特點是的terminfo和termcap的範圍之外,因爲它與終端響應交易,而terminfo的/ termcap中描述了這些功能:
雖然在原則上,沒有什麼可能是終端描述的一部分沒有限制,有跨終端早在上世紀80年代的小共性爲響應。少數終端可以報告特定的功能,其中大部分是恆定的(例如,版本信息)。大部分可變的反應都是在terminfo/termcap在X/Open Curses中或多或少固化之後發生的。 ncurses extends that,但是再次,大多數擴展是特徵或特殊鍵。
Terminal.app實現了最常用的功能xterm
,但(像其他模仿者一樣)忽略了大部分終端響應。其中,xterm
提供終端響應,它可以告訴應用程序當前窗口的顏色。有幾個命令行實用程序(xtermset
和xtermcontrol
)已被寫入使用此信息(並且它們再次僅涵蓋部分劇目)。使用xtermcontrol
表明Terminal.app缺乏這方面的—見截圖:
我不認爲大多數終端支持報告 - 它看起來不像termcap或terminfo有任何它的條目。你只需要設置顏色對,而不是問問終端它現在設置的是什麼。在ECMA-48標準(在ANSI X3.64之後,它曾用於生存的情況下,最好稱爲「ANSI」)中,引用顏色的唯一命令是SGR「Set Graphic Rendition」,它純粹是隻寫的。
關於perl或Terminal.app不知道,但如果分別輸出"\033]10;?\07"
或"\033]11;?\07"
,xterm等會將前景/背景顏色控制序列寫入標準輸入。請特別注意http://invisible-island.net/xterm/ctlseqs/ctlseqs.html,http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Controls。
我認爲你是正確的。我確實閱讀了大量的手冊頁,並得出了相同的結論,即當前的顏色對是隻寫屬性,但由於終端編程對我來說都是新的,所以我想問一些我錯過的東西。謝謝你的幫助。 – HairOfTheDog 2011-02-15 15:49:30