Linux中國

如何改變你的終端顏色

你可以使用特殊的 ANSI 編碼設置為 Linux 終端添加顏色,可以在終端命令或配置文件中動態添加,也可以在終端模擬器中使用現成的主題。無論哪種方式,你都可以黑色屏幕上找回懷舊的綠色或琥珀色文本。本文演示了如何使 Linux 變得豐富多彩(或單色)的方法。

終端的功能特性

現代系統的終端的顏色配置通常默認至少是 xterm-256color,但如果你嘗試為終端添加顏色但未成功,則應檢查你的 TERM 設置。

從歷史上看,Unix 終端從字面上講是:用戶可以輸入命令的共享計算機系統上實際的物理端點(終點)。它們專指通常用於遠程發出命令的電傳打字機(這也是我們今天在 Linux 中仍然使用 /dev/tty 設備的原因)。終端內置了 CRT 顯示器,因此用戶可以坐在辦公室的終端上直接與大型機進行交互。CRT 顯示器價格昂貴 —— 無論是製造還是使用控制;比擔心抗鋸齒和現代計算機專家理所當然認為的漂亮信息,讓計算機吐出原始 ASCII 文本更容易。然而,即使在那時,技術的發展也很快,很快人們就會發現,隨著新的視頻顯示終端的設計,他們需要新的功能特性來提供可選功能。

例如,1978 年發布的花哨的新 VT100 支持 ANSI 顏色,因此如果用戶將終端類型識別為 vt100,則計算機可以提供彩色輸出,而基本串列設備可能沒有這樣的選項。同樣的原則適用於今天,它是由 TERM 環境變數設定的。你可以使用 echo 檢查你的 TERM 定義:

$ echo $TERM
xterm-256color

過時的(但在一些系統上仍然為了向後兼容而維護)/etc/termcap 文件定義了終端和印表機的功能特性。現代的版本是 terminfo,位於 /etc/usr/share 中,具體取決於你的發行版。 這些文件列出了不同類型終端中可用的功能特性,其中許多都是由歷史上的硬體定義的,如 vt100 到 vt220 的定義,以及 xterm 和 Xfce 等現代軟體模擬器。大多數軟體並不關心你使用的終端類型; 在極少數情況下,登錄到檢查兼容功能的伺服器時,你可能會收到有關錯誤的終端類型的警告或錯誤。如果你的終端設置為功能特性很少的配置文件,但你知道你所使用的模擬器能夠支持更多功能特性,那麼你可以通過定義 TERM 環境變數來更改你的設置。你可以通過在 ~/.bashrc 配置文件中導出 TERM 變數來完成此操作:

export TERM=xterm-256color

保存文件並重新載入設置:

$ source ~/.bashrc

ANSI 顏色代碼

現代終端繼承了用於「元」特徵的 ANSI 轉義序列。這些是特殊的字元序列,終端將其解釋為操作而不是字元。例如,此序列將清除屏幕,直到下一個提示符:

$ printf '33[2J'

它不會清除你的歷史信息;它只是清除終端模擬器中的屏幕,因此它是一個安全且具有示範性的 ANSI 轉義序列。

ANSI 還具有設置終端顏色的序列。例如,鍵入此代碼會將後續文本更改為綠色:

$ printf '33[32m'

只要你對相同的計算機使用同一個顏色,就可以使用顏色來幫助你記住你登錄的系統。例如,如果你經常通過 SSH 連接到伺服器,則可以將伺服器的提示符設置為綠色,以幫助你一目了然地將其與本地的提示符區分開來。 要設置綠色提示符,請在提示符前使用 ANSI 代碼設置為綠色,並使用代表正常默認顏色的代碼結束:

export PS1=`printf "33[32m$ 33[39m"`

前景色和背景色

你不僅可以設置文本的顏色。使用 ANSI 代碼,你還可以控制文本的背景顏色以及做一些基本的樣式。

例如,使用 33[4m,你可以為文本加上下劃線,或者使用 33[5m 你可以將其設置為閃爍的文本。起初這可能看起來很愚蠢,因為你可能不會將你的終端設置為所有文本帶有下劃線並整天閃爍, 但它對某些功能很有用。例如,你可以將 shell 腳本生成的緊急錯誤設置為閃爍(作為對用戶的警報),或者你可以為 URL 添加下劃線。

作為參考,以下是前景色和背景色的代碼。前景色在 30 範圍內,而背景色在 40 範圍內:

顏色 前景色 背景色
黑色 33[30m 33[40m
紅色 33[31m 33[41m
綠色 33[32m 33[42m
橙色 33[33m 33[43m
藍色 33[34m 33[44m
品紅 33[35m 33[45m
青色 33[36m 33[46m
淺灰 33[37m 33[47m
回退到發行版默認值 33[39m 33[49m

還有一些可用於背景的其他顏色:

顏色 背景色
深灰 33[100m
淺紅 33[101m
淺綠 33[102m
黃色 33[103m
淺藍 33[104m
淺紫 33[105m
藍綠 33[106m
白色 33[107m

持久設置

在終端會話中設置顏色只是暫時的,相對無條件的。有時效果會持續幾行;這是因為這種設置顏色的方法依賴於 printf 語句來設置一種模式,該模式僅持續到其他設置覆蓋它。

終端模擬器通常獲取使用哪種顏色的指令的方式來自於 LS_COLORS 環境變數的設置,該設置又由 dircolors 的設置填充。你可以使用 echo 語句查看當前設置:

$ echo $LS_COLORS
rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;
38;5;11:so=38;5;13:do=38;5;5:bd=48;5;
232;38;5;11:cd=48;5;232;38;5;3:or=48;
5;232;38;5;9:mi=01;05;37;41:su=48;5;
196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;
196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;
[...]

或者你可以直接使用 dircolors

$ dircolors --print-database
[...]
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
[...]

這看起來很神秘。文件類型後面的第一個數字是屬性代碼,它有六種選擇:

  • 00 無
  • 01 粗體
  • 04 下劃線
  • 05 閃爍
  • 07 反白
  • 08 暗色

下一個數字是簡化形式的顏色代碼。你可以通過獲取 ANSI 代碼的最後一個數字來獲取顏色代碼(綠色前景為 32,綠色背景為 42;紅色為 31 或 41,依此類推)。

你的發行版可能全局設置了 LS_COLORS,因此系統上的所有用戶都會繼承相同的顏色。如果你想要一組自定義的顏色,可以使用 dircolors。首先,生成顏色設置的本地副本:

$ dircolors --print-database > ~/.dircolors

根據需要編輯本地列表。如果你對自己的選擇感到滿意,請保存文件。你的顏色設置只是一個資料庫,不能由 ls 直接使用,但你可以使用 dircolors 獲取可用於設置 LS_COLORS 的 shellcode:

$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
[...]
export LS_COLORS

將輸出複製並粘貼到 ~/.bashrc 文件中並重新載入。或者,你可以將該輸出直接轉儲到 .bashrc 文件中並重新載入。

$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc

你也可以在啟動時使 Bash 解析 .dircolors 而不是手動進行轉換。實際上,你可能不會經常改變顏色,所以這可能過於激進,但如果你打算改變你的配色方案,這是一個選擇。在 .bashrc 文件中,添加以下規則:

[[ -e $HOME/.dircolors ]] && eval "`dircolors --sh $HOME/.dircolors`"

如果你的主目錄中有 .dircolors 文件,Bash 會在啟動時對其進行評估並相應地設置 LS_COLORS

顏色

在終端中使用顏色是一種可以為你自己提供特定信息的快速視覺參考的簡單方法。但是,你可能不希望過於依賴它們。畢竟,顏色不是通用的,所以如果其他人使用你的系統,他們可能不會像你那樣看懂顏色代表的含義。此外,如果你使用各種工具與計算機進行交互,你可能還會發現某些終端或遠程連接無法提供你期望的顏色(或根本不提供顏色)。

除了上述警示之外,顏色在某些工作流程中可能很有用且很有趣,因此創建一個 .dircolor 資料庫並根據你的想法對其進行自定義吧。

via: https://opensource.com/article/19/9/linux-terminal-colors

作者:Seth Kenlon 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
1
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國