我可以透過首選項更改顏色,但是如何透過命令列更改終端機的背景顏色和文字顏色?
答案1
在某些 XTerm/ANSI 相容終端(如xterm
和gnome-terminal
)上,您可以使用比預設8/16 色調色盤更大的調色盤設定顏色(例如使用88 色、256 色或167777216 色(RGB) 調色盤) ; 皆xterm
支援gnome-terminal
256 色和 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
根據您要將顏色套用到前景還是背景,請在以下指令中(分別)使用<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'
有必要使用以下命令重新繪製提示,printf '\e[K'
以便將背景顏色應用於整行並將前景色應用於遊標:
在相容終端中使用 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'
同樣,有必要重新繪製提示,printf '\e[K'
以便將背景顏色應用於整行並將前景色應用於遊標:
使用任一方法,您都可以printf '\e[0m'
重設所有屬性:
答案2
找到的訊息這一頁,不包括預覽列:
^[
序列由轉義字元(通常由“ ”或“ <Esc>
”表示)後面跟著一些其他字元組成:“ ^[FCm
”(其中FC
是下面項目符號列表中的數字之一)。
在 中bash
,Esc程式碼可以是以下任一種:
\e
\033
(八進位)\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"
例如將背景顏色設定為黑色
或者,要設定顏色的名稱,您可以簡單地使用white
或green
,來自與 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
.