我可以通过偏好设置来改变颜色,但是如何通过命令行来改变终端的背景颜色和文本颜色呢?
答案1
在某些 XTerm/ANSI 兼容终端(如xterm
和gnome-terminal
)上,您可以使用比默认 8/16 色调色板更大的调色板来设置颜色(例如,使用 88 色、256 色或 16777216 色(RGB)调色板; 和 同时xterm
支持gnome-terminal
256 色和 16777216 色(RGB)调色板);请注意,shell 可能会覆盖这一点(例如 就是这种情况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
:白色(请勿与浅色前景一起使用)
要同时设置前景色和背景色,请使用以下形式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
。