設定/重置

設定/重置

我可以透過首選項更改顏色,但是如何透過命令列更改終端機的背景顏色和文字顏色?

答案1

在某些 XTerm/ANSI 相容終端(如xtermgnome-terminal)上,您可以使用比預設8/16 色調色盤更大的調色盤設定顏色(例如使用88 色、256 色或167777216 色(RGB) 調色盤) ; 皆xterm支援gnome-terminal256 色和 16777216 色 (RGB) 調色盤);請注意,shell 可能會覆蓋此設定(例如 for 就是這種情況zsh)。

下面是一個腳本,用於在支援 256 色調色板的 XTerm/ANSI 相容終端中列出 256 色調色板中的顏色及其 ANSI 顏色代碼:

#!/bin/bash
for((i=16; i<256; i++)); do
    printf "\e[48;5;${i}m%03d" $i;
    printf '\e[0m';
    [ ! $((($i - 15) % 6)) -eq 0 ] && printf ' ' || printf '\n'
done

截圖1

螢幕截圖

根據您要將顏色套用到前景還是背景,請在以下指令中(分別)使用<fg_bg>38或:48

printf '\e[<fg_bg>;5;<ANSI_color_code>m'

例如,要將前景色 ( <fg_bg>= 38) 設定為紅色 ( <ANSI_color_code>= 196),將背景色 ( <fg_bg>= 48) 設定為黑色 ( <ANSI_color_code>= 0):

printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'

截圖3

有必要使用以下命令重新繪製提示,printf '\e[K'以便將背景顏色應用於整行並將前景色應用於遊標:

截圖4

在相容終端中使用 RGB 值而不是 ANSI 顏色代碼也可以完成相同的事情;根據您要將顏色套用到前景還是背景,請在以下指令中(分別)使用<fg_bg>38或:48

printf '\e[<fg_bg>;2;<R>;<G>;<B>m'

例如,要將前景色 ( <fg_bg>= 38) 設定為紅色 ( <R>= 255, <G>= 0, <B>= 0),將背景色 ( <fg_bg>= 48) 設定為黑色 ( <R>= 0, <G>= 0, <B>= 0):

printf '\e[38;2;255;0;0m Foreground color: red\n'
printf '\e[48;2;0;0;0m Background color: black\n'

截圖5

同樣,有必要重新繪製提示,printf '\e[K'以便將背景顏色應用於整行並將前景色應用於遊標:

截圖6

使用任一方法,您都可以printf '\e[0m'重設所有屬性:

截圖7

答案2

找到的訊息這一頁,不包括預覽列:

^[序列由轉義字元(通常由“ ”或“ <Esc>”表示)後面跟著一些其他字元組成:“ ^[FCm”(其中FC是下面項目符號列表中的數字之一)。

在 中bashEsc程式碼可以是以下任一種:

  1. \e
  2. \033(八進位)
  3. \x1B(十六進位)

註1:\e[0m」序列刪除所有屬性(格式和顏色)。將其添加到每個彩色文字的末尾可能是個好主意。

筆記2:前景色和背景色可能會有所不同,具體取決於終端的配置和並非所有顏色都受支援

設定/重置

  • 0:重置/刪除所有修改器、前景和背景屬性:echo -e "\e[0mNormal Text"
  • 1:粗體/明亮:echo -e "Normal \e[1mBold"
  • 2: 暗淡:echo -e "Normal \e[2mDim"
  • 4: 底線:echo -e "Normal \e[4mUnderlined"
  • 5:閃爍(在 XTerm 以外的大多數終端中不起作用):echo -e "Normal \e[5mBlink"
  • 7:反轉/反轉:echo -e "Normal \e[7minverted"
  • 8:隱藏(對於敏感資訊有用):echo -e "Normal \e[8mHidden Input"
  • 21:重置/刪除粗體/明亮:echo -e "Normal \e[1mBold \e[21mNormal"
  • 22:重置/刪除暗淡:echo -e "Normal \e[2mDim \e[22mNormal"
  • 24:重置/刪除底線:echo -e "Normal \e[4mUnderlined \e[24mNormal"
  • 25:重置/刪除閃爍:echo -e "Normal \e[5mBlink \e[25mNormal"
  • 27:重置/刪除反轉/反轉:echo -e "Normal \e[7minverted \e[27mNormal"
  • 28:重置/刪除隱藏:echo -e "Normal \e[8mHidden \e[28mNormal"

前景

  • 39:預設(通常為綠色、白色或淺灰色):echo -e "Default \e[39mDefault"
  • 30:黑色:(echo -e "Default \e[30mBlack"最好與背景顏色結合 echo -e "Default \e[30;107mBlack on white":)
  • 31:紅色(請勿與綠色背景一起使用)
  • 32: 綠色的
  • 33: 黃色的
  • 34: 藍色的
  • 35:洋紅色/紫色
  • 36:青色
  • 37: 淺灰
  • 90: 深灰色
  • 91: 紅燈
  • 92:淺綠色
  • 93:淺黃色
  • 94: 淺藍色
  • 95:淺洋紅色/粉紅色
  • 96:淺青色
  • 97: 白色的

背景

  • 49:預設背景顏色(通常為黑色或藍色)
  • 40: 黑色的
  • 41: 紅色的
  • 42: 綠色的
  • 43: 黃色的
  • 44: 藍色的
  • 45:洋紅色/紫色
  • 46:青色
  • 47:淺灰色(不要與白色前景一起使用)
  • 100:深灰色(不要與黑色前景一起使用)
  • 101: 紅燈
  • 102:淺綠色(不要與白色前景一起使用)
  • 103:淺黃色(請勿與白色前景一起使用)
  • 104:淺藍色(請勿與淺黃色前景一起使用)
  • 105:淺洋紅色/粉紅色(請勿在淺色前景中使用)
  • 106:淺青色(不要與白色前景一起使用)
  • 107:白色(請勿在淺色前景中使用)

若要同時設定前景色和背景色,請使用 form echo -e "\e[S;FG;BGm"。例如:(echo -e "\e[1;97;41m"紅色背景上的粗體白色前景)

有關 256 種顏色選項,請參閱來源頁面。

答案3

偶然改變顏色

如果是為了偶然改變顏色:

您可以使用設定項命令:

setterm -term linux -back <background_colour> -fore <text_color> -clear

從顏色中,您可以選擇(前景和背景):

black|blue|green|cyan|red|magenta|yellow|white|default

更多選項:

setterm -help

更改您的個人資料(顏色)設置

在 14.04 中,我沒有找到用於dconf設定顏色或終端的選項。但是您可以使用gconftool

  • 您首先需要取得您的個人資料名稱:

    gconftool-2 --get /apps/gnome-terminal/global/profile_list
    
  • 然後,設定您的個人資料的文字顏色:

    gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF"
    

    例如將文字顏色設定為白色

    與背景顏色相同:

    gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000"
    

    例如將背景顏色設定為黑色

或者,要設定顏色的名稱,您可以簡單地使用whitegreen,來自與 setterm 命令相同的調色板,例如:

gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black

答案4

用於獲得彩色輸出的各種顏色代碼也可用於獲得彩色背景:

40  black
41  red
42  green
43  yellow
44  blue
45  magenta
46  cyan
47  white

因此,以下命令將我的背景變成紅色:

$ echo -e '\e[0;41m'

根據 shell、終端模擬器等,您可能不需要-e.

相關內容