有彩色 shell 輸出的手冊頁嗎?

有彩色 shell 輸出的手冊頁嗎?

您知道,由特殊字元序列產生的彩色輸出,例如:

echo -e "\e[34m Hello\n \e[0m"

這將產生藍色的單字“Hello”。為此,我必須在網路上搜索,這很困難,因為不同的來源可能會說不同的內容。我想,一定有一些手冊,但我找不到它們。即使有apropos color或類似的東西。那麼,問題是 - 我可以在哪裡找到可靠的手冊?

答案1

資訊來源太多,無法在此頁面列出:

  • 命令echo -e使用一個擴大呈現\e為 ASCII 27(八進位 33 或“\033”)。列印這些用途的便攜式方式printf(POSIX)。與標準比較echo(POSIX)。
  • 你的例子可以重寫為

    printf "\033[34m Hello\n \033[0m"

  • 顏色逃逸的標準是ECMA-48(編碼字元集的控制函數)。
  • 在 ECMA-48 中,8.3.117 SGR - 選擇圖形再現列出了用於設定 8 種前景顏色和 8 種背景顏色的控制序列。
  • 它還列出了代碼 39/49「預設顯示顏色(實現定義)」和 38/48「為未來標準化保留;用於設定 ISO 8613-6 [CCITT 建議 T.416] 中指定的字元前景色」。也就是說,另一個組織提出了建議,但尚未(到目前為止,24 年後)成為標準的一部分。
  • 仔細閱讀它,您可能會注意到該標準在許多地方都很模糊,允許有不同的解釋。它描述了句法這些控制序列,但沒有描述它們行為。為此,您必須查看相應終端的文件。
  • xterm 的文檔位於XTerm 控制序列,假設您熟悉 DEC 文檔http://vt100.net
  • 對於其他終端,它們的手冊頁可能會列舉控制項(如 Linux 控制台中所做的那樣)控制台程式碼)。
  • 其他終端將自己記錄為“xterm”;有關討論,請參閱 xterm 常見問題解答透過計數控制項來比較版本。幸運的是,顏色控制是大多相容(但請參閱 ncurses FAQ我的終端機顯示一些未著色的空間)。
  • 您也可以閱讀手冊頁tput,這允許您使用terminfoshell 腳本中的功能。你的例子可以重寫為

    printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
    
  • 一些來源,例如Bash 提示字元 HOWTO進階 Bash 腳本指南提到顏色,但(即使是這些)通常也有差距和遺漏,對於 ECMA-48 沒有幫助。

  • 您可以透過其他來源(例如引用的來源)等的網路搜尋副本找到大多數其他來源,並且通常很少關注實際標準。

相關內容