设置/重置

设置/重置

我可以通过偏好设置来改变颜色,但是如何通过命令行来改变终端的背景颜色和文本颜色呢?

答案1

在某些 XTerm/ANSI 兼容终端(如xtermgnome-terminal)上,您可以使用比默认 8/16 色调色板更大的调色板来设置颜色(例如,使用 88 色、256 色或 16777216 色(RGB)调色板; 和 同时xterm支持gnome-terminal256 色和 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

截图1

截屏

根据是否要将颜色应用于前景或背景,在以下命令中分别使用或<fg_bg>的值:3848

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>的值:3848

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:白色(请勿与浅色前景一起使用)

要同时设置前景色和背景色,请使用以下形式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

相关内容