kos*_*kos 67
在某些 XTerm/ANSI 兼容终端(如xterm和gnome-terminal)上,您可以使用比默认 8/16 色调色板更大的调色板设置颜色(例如使用 88 色、256 色或 16777216 色 (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
Run Code Online (Sandbox Code Playgroud)
根据您是要将颜色应用到前景还是背景,请在以下命令中使用或(分别)的<fg_bg>值:3848
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
Run Code Online (Sandbox Code Playgroud)
例如,要将前景色 ( <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'
Run Code Online (Sandbox Code Playgroud)
有必要使用重新绘制提示printf '\e[K',以便将背景颜色应用于整行,并将前景色应用于光标:
在兼容终端中使用 RGB 值而不是 ANSI 颜色代码可以完成同样的事情;根据您是要将颜色应用到前景还是背景,请在以下命令中使用或(分别)的<fg_bg>值:3848
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
Run Code Online (Sandbox Code Playgroud)
例如,要将前景色 ( <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'
Run Code Online (Sandbox Code Playgroud)
同样,有必要重新绘制提示printf '\e[K',以便将背景颜色应用于整行,并将前景色应用于光标:
使用任一方法,您都可以使用printf '\e[0m'重置所有属性:
Agi*_*ief 44
在此页面上找到的信息,不包括预览栏:
序列由转义字符(通常由“ ^[”或“ <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 色选项,请参阅源页面。
Jac*_*ijm 31
如果它是为了偶然改变颜色:
您可以使用setterm命令:
setterm -term linux -back <background_colour> -fore <text_color> -clear
Run Code Online (Sandbox Code Playgroud)
从颜色中,您可以选择(前景色和背景色):
black|blue|green|cyan|red|magenta|yellow|white|default
Run Code Online (Sandbox Code Playgroud)
更多选择:
setterm -help
Run Code Online (Sandbox Code Playgroud)
在 14.04 中,我没有找到dconf用于设置颜色或终端的选项。但是,您可以使用gconftool
您首先需要获取您的个人资料名称:
gconftool-2 --get /apps/gnome-terminal/global/profile_list
Run Code Online (Sandbox Code Playgroud)然后,设置您的个人资料的文本颜色:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF"
Run Code Online (Sandbox Code Playgroud)
例如将文本颜色设置为白色
与背景颜色相同:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000"
Run Code Online (Sandbox Code Playgroud)
例如将背景颜色设置为黑色
或者,要设置颜色的名称,您可以简单地从与 setterm 命令相同的调色板中使用white或green,例如:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
Run Code Online (Sandbox Code Playgroud)
用于获取彩色输出的各种颜色代码也可用于获取彩色背景:
40 black
41 red
42 green
43 yellow
44 blue
45 magenta
46 cyan
47 white
Run Code Online (Sandbox Code Playgroud)
因此,以下命令将我的背景变为红色:
$ echo -e '\e[0;41m'
Run Code Online (Sandbox Code Playgroud)
根据外壳、终端模拟器等,您可能不需要-e.
有关将前景或背景切换到调色板的特定颜色,甚至某些终端中的直接 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
Run Code Online (Sandbox Code Playgroud)
这可能会持续更长时间(直到被另一个 OSC 10 / 11 覆盖或通过 OSC 110 / 111 重置),但与 dconf 方法不同,这仍然只影响当前终端。