我可以通过首选项更改颜色,但是如何通过命令行更改终端的背景颜色和文本颜色?
dconf
。我之前已经写过类似问题的答案:askubuntu.com/a/628129/295286
\033[00;34mFOO\033[00m
我可以通过首选项更改颜色,但是如何通过命令行更改终端的背景颜色和文本颜色?
dconf
。我之前已经写过类似问题的答案:askubuntu.com/a/628129/295286
\033[00;34mFOO\033[00m
Answers:
在某些XTerm / ANSI兼容终端(如xterm
和gnome-terminal
)上,可以使用比默认8/16色调色板更大的调色板(例如,使用88色,256色或16777216色(RGB)调色板)设置颜色。 ; xterm
和都gnome-terminal
支持256色和16777216色(RGB)调色板);请注意,shell可能会覆盖此设置(例如对于就是这种情况zsh
)。
这是一个脚本,用于列出256色调色板中的颜色以及在支持256色调色板的XTerm / ANSI兼容终端中的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'
用来重置所有属性:
xterm
并gnome-terminal
识别\ E [38/48; 2; R; G;家蚕真彩转义序列; 但是,xterm
将实际颜色四舍五入到其256色调色板中的最近值。gnome-terminal
显示转义序列中给出的确切真实颜色。
xterm
),如果光标恰好位于最右边(可视地显示在最右边的列中,但由于已经在最右边的列中打印了一个字符,从逻辑上讲已经超出了该范围),则最后一个字母将被剥离。参见例如bugzilla.gnome.org/show_bug.cgi?id=740789或savannah.gnu.org/bugs/?36831。
在此页面上找到的信息,不包括预览列:
序列由转义字符(通常由“ ^[
”或“ <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
:白色(请勿与浅色前景一起使用)要同时设置前景色和背景色,请使用the form echo -e "\e[S;FG;BGm"
。例如:(echo -e "\e[1;97;41m"
红色背景上的加粗白色前景)
有关256种颜色的选择,请参见源页面。
如果要偶然更改颜色:
您可以使用setterm命令:
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"
例如将背景色设置为黑色
或者,要设置颜色的名称,您可以简单地在与setterm命令相同的调色板中使用white
或green
,例如:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'"
。
gconftool-2
(为Ubuntu 14.04,也许如下几个版本),或dconf
或gsettings
对Ubuntu的变化GNOME终端的设置新的版本,并采取立即生效的所有的标签和相同的配置文件的窗口。我不认为OP正在寻找这种行为。
有关将前景或背景切换为调色板的特定颜色,或在某些终端中甚至切换为直接RGB颜色的信息,请参见kos的答案。这样的序列效果一直持续到选择了其他颜色(或将其恢复为默认颜色)为止。
某些终端仿真器支持的另一种方法是使用OSC 10/11转义序列重新定义终端的默认前景色和背景色的确切RGB值:
echo -ne '\e]10;#123456\e\\' # set default foreground to #123456
echo -ne '\e]11;#abcdef\e\\' # set default background to #abcdef
这可能会持续更长的时间(直到被另一个OSC 10/11覆盖或通过OSC 110/111重置),但是与dconf方法不同,这仍然仅影响当前终端。