Terminal
為什麼 tput 在 TERM=vt100 上靜默失敗
我在 macOS 上使用 zsh 和 iTerm 作為我的終端模擬器,我的環境
TERM=xterm-256color
預設使用。如果我執行
tput setaf 3
它會以程式碼 0 退出。如果我設置
TERM=vt100
並執行tput setaf 3
它,它會以程式碼 1 退出(表示失敗)。為什麼會這樣?
vt100
沒有註意到和失敗的setaf
能力。tput
定義可以在terminfo(5)
數據庫中找到:% TERM=xterm-256color infocmp | grep setaf setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m, % TERM=vt100 infocmp | grep setaf %
A
vt100
相當舊,手冊沒有提到支持顏色等花哨的東西(顯然你可以用vt100購買的地墊有不同的顏色……)。
VT100s 從不上色(請參閱ncurses 常見問題解答)。因此終端描述缺少該功能,並且如文件所述, tput 返回錯誤。
1976 年推出 vt100 時,顏色是一項昂貴的功能,沒有用於商品終端。幾年後顏色標準化(至少, 1979 年的 ECMA-48第 2 版提供了此資訊;第 1 版無法檢查)。