2012-08-02 125 views
3

喂 - 如果我想要確定的顏色#終端可以顯示我根本讀確定終端格式化輸出的能力?

tput colors 

輸出......但我無法弄清楚如何確定的終端,我寫信給CAN支持其他格式化請求,如粗體,下劃線,反向視頻,眨眼(yuck!)。

我看到如何通過設置tput的輸出,但不能確定是否能在嘗試之前就存在。

我應該簡單地假設的能力在所有終端中存在?

+0

請注意,這不會告訴您終端仿真程序是否支持該屬性,只有該屬性存在terminfo條目。 – 2012-08-03 01:08:07

回答

3

你可以在你正在尋找的能力使用infocmp這一點,和grep。如果找到一個結果,那麼能力支持:

infocmp | grep bold 
    bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M, 

爲了獲得不同功能的名稱退房the Linux man pages for terminfo,或this one爲名稱的表格佈局。

2

可能有更簡單的方法,但你可以通過運行

infocmp $TERM 

看到當前終端(與任何支持的終端類型的名稱替換$TERM)全文進入查詢terminfo數據庫。您可能需要閱讀手冊頁以瞭解如何根據您的需要創建最容易解析的輸出。

1

如果你嘗試用一個未定義的屬性的tput命令,它會返回一個非零退出代碼。您可以重定向正常輸出(如果有),以避免生效。

for attr in bold rev smul blink sshm 
do 
    if ! tput "$attr" > /dev/null 
    then 
     echo "Attribute $attr is undefined" 
    fi 
done 

否則,如果您grepinfocmp輸出,使用-1(這是一個)選項輸出屬性,每行一個。

infocmp -1 | grep smul