喂 - 如果我想要確定的顏色#終端可以顯示我根本讀確定終端格式化輸出的能力?
tput colors
輸出......但我無法弄清楚如何確定的終端,我寫信給CAN支持其他格式化請求,如粗體,下劃線,反向視頻,眨眼(yuck!)。
我看到如何通過設置tput的輸出,但不能確定是否能在嘗試之前就存在。
我應該簡單地假設的能力在所有終端中存在?
喂 - 如果我想要確定的顏色#終端可以顯示我根本讀確定終端格式化輸出的能力?
tput colors
輸出......但我無法弄清楚如何確定的終端,我寫信給CAN支持其他格式化請求,如粗體,下劃線,反向視頻,眨眼(yuck!)。
我看到如何通過設置tput的輸出,但不能確定是否能在嘗試之前就存在。
我應該簡單地假設的能力在所有終端中存在?
你可以在你正在尋找的能力使用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爲名稱的表格佈局。
可能有更簡單的方法,但你可以通過運行
infocmp $TERM
看到當前終端(與任何支持的終端類型的名稱替換$TERM
)全文進入查詢terminfo數據庫。您可能需要閱讀手冊頁以瞭解如何根據您的需要創建最容易解析的輸出。
如果你嘗試用一個未定義的屬性的tput
命令,它會返回一個非零退出代碼。您可以重定向正常輸出(如果有),以避免生效。
for attr in bold rev smul blink sshm
do
if ! tput "$attr" > /dev/null
then
echo "Attribute $attr is undefined"
fi
done
否則,如果您grep
的infocmp
輸出,使用-1
(這是一個)選項輸出屬性,每行一個。
infocmp -1 | grep smul
請注意,這不會告訴您終端仿真程序是否支持該屬性,只有該屬性存在terminfo條目。 – 2012-08-03 01:08:07