当前位置: 首页>>技术教程>>正文


改变终端文本和背景的颜色?

, ,

问题描述

我可以通过首选项更改颜色,但如何通过命令行更改终端的背景颜色和文本颜色?

最佳解决方案

在某些XTerm /ANSI-compatible终端(如xtermgnome-terminal)上,您可以使用大于默认8/16色调色板的调色板设置颜色(例如使用88色,256色或16777216色(RGB)调色板; xtermgnome-terminal均支持256色和16777216色(RGB)调色板);请注意,shell可能会覆盖它(例如zsh就是这种情况)。

这是一个脚本,用于列出256色调色板中的颜色以及具有256色调色板支持的XTerm /ANSI-compatible终端中的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

command-line,color-management,ubuntu

command-line,color-management,ubuntu

根据您是要将颜色应用于前景还是背景,请使用< 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'

command-line,color-management,ubuntu

有必要使用printf '\e[K'重绘提示,以便将背景颜色应用于整行,并将前景色应用于光标:

command-line,color-management,ubuntu

在兼容终端中使用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'

command-line,color-management,ubuntu

同样,有必要使用printf '\e[K'重新绘制提示,以便将背景颜色应用于整行,并将前景色应用于光标:

command-line,color-management,ubuntu

使用任一方法,您都可以使用printf '\e[0m'重置所有属性:

command-line,color-management,ubuntu

次佳解决方案

偶然更改颜色

如果它是为了偶然改变颜色:

您可以使用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命令相同的调色板中的whitegreen,例如:

gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black

第三种解决方案

this page上找到的信息,不包括预览列:

序列由Escape字符(通常由“^[”或“<Esc>”表示)组成,后跟一些其他字符:“<Esc>[FCm”(其中FC是下面项目符号列表中的数字之一)。

bash中,Esc代码可以是以下任一项:

  1. \e

  2. \033(八进制)

  3. \x1B(十六进制)

注1:“\e[0m”序列删除所有属性(格式和颜色)。在每个彩色文本的末尾添加它是个好主意。

注2:前景色和背景色可能会有所不同,具体取决于终端的配置和not all colours are supported

设置/复位

  • 0:重置/删除所有修改器,前景和背景属性:echo -e "\e[0mNormal Text"

  • 1:Bold /Bright:echo -e "Normal \e[1mBold"

  • 2:Dim: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"

Foreground

  • 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色选项,请参阅源页面。

第四种方案

用于获得彩色输出的各种颜色代码也可用于获取coloured backgrounds

40  black
41  red
42  green
43  yellow
44  blue
45  magenta
46  cyan
47  white

因此,以下命令将我的背景变为红色:

$ echo -e '\e[0;41m'

根据shell,终端仿真器等,您可能不需要-e

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1678.html,未经允许,请勿转载。