
我是否正確地在inittab 條目中設定終端類型,如下所示: c2:... tty2 linux-m 只是某種資訊性任務- 設定TERM 變數來通知命令/程式/應用程式系統實際上是什麼終端類型。也就是說,即使術語將終端描述為單色類型,但當類似命令ls --color=always
將其輸出發送到終端時,終端確實能夠顯示顏色,即使它在 inittab 中定義為非顏色,我也會顯示顏色?
答案1
TERM 確實提供了豐富的信息,但許多程式/命令會尊重它或依賴它。
顏色的產生方式很大程度取決於終端類型。在實踐中,我懷疑它們都使用支援顏色的 ANSI(或超集)。
如果 TERM 設定為單聲道終端類型,程式將必須使用一些其他資訊來決定使用哪種類型的終端顏色控制。如果它預設為“ANSI”,它可能會在當今的大多數情況下工作。
如果終端確實是單色的,這將是一件壞事,命令/程式最好使用單色方法(例如反轉、下劃線、強度、刪除線、閃爍等)代替顏色來在視覺上區分元素。
如果特定的程序/命令遵循 TERM(正如許多程序/命令一樣),它同樣有可能向您報告終端類型不支援您對顏色的請求。
看http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html
if(has_colors() == FALSE)
{ endwin();
printf("Your terminal does not support color\n");
exit(1);
}
我還沒有檢查 ncurses 原始程式碼來了解它has_colors()
是如何實現的,並且我不知道有多少比例的程式/命令(如果有)遵循上述模式。
我發現一款非常重要的軟體尊重 TERM
TERM=xterm-mono robotfindskitten
(mono display)
另一方面,ls
知道我什麼時候在撒謊。