linux更改终端颜色

您可以使用特殊的ANSI编码设置在Linux终端中添加颜色,可以在终端命令或配置文件中动态添加颜色,也可以在终端仿真器中使用现成的主题。 无论哪种方式,黑色屏幕上的怀旧绿色或琥珀色文字都是完全可选的。 本文演示了如何使Linux随心所欲(彩色或单色)。

终端功能

现代系统通常默认至少使用xterm-256color,但是如果您尝试向终端添加颜色而没有成功,则应检查TERM设置。

从历史上看,Unix终端实际上是这样的:物理点位于共享计算机系统的文字端点(终端)上,用户可以在其中键入命令。 它们与电传打字机(这就是为什么今天的Linux中仍具有/ dev / tty设备)不同,后者通常用于远程发出命令。 终端内置了CRT监视器,因此用户可以坐在办公室的终端上直接与大型机交互。 CRT监视器价格昂贵-既要制造又要控制; 使用计算机吐出原始ASCII文本要容易得多,而不必担心抗锯齿和现代计算机工作者认为理所当然的其他优点。 但是,即使在那时,技术的发展仍在Swift发展,并且很快就可以看出,随着新视频显示终端的设计,它们需要新的功能以可选方式提供。

例如,1978年发布的精美VT100支持ANSI颜色,因此,如果用户将终端类型标识为vt100,则计算机可以提供颜色输出,而基本的串行设备可能没有这种选择。 今天,同样的原则适用,并且由TERM 环境变量设置 。 您可以使用echo检查您的TERM定义:

$ 
     
     echo 
     
     $TERM 
     
     

xterm-256color
export TERM =xterm-256color 
export TERM =xterm-256color

保存文件,然后重新加载设置:

$  source ~ / .bashrc 
$  source ~ / .bashrc

ANSI颜色代码

现代终端已经继承了ANSI转义序列的“元”功能。 这些是特殊的字符序列,终端将其解释为动作而不是字符。 例如,此序列将屏幕清除到下一个提示:

$  printf ` \033 [ 2J ` 
$  printf ` \033 [ 2J `

这并不能清除您的历史记录; 它只是清除了终端仿真器中的屏幕,因此这是一个安全且具有示范性的ANSI转义序列。

ANSI也具有设置终端颜色的顺序。 例如,键入此代码会将随后的文本更改为绿色:

$  printf '\033[32m' 
$  printf '\033[32m'

只要您以与计算机相同的方式看到颜色,就可以使用颜色来帮助您记住所登录的系统。 例如,如果您定期通过SSH进入服务器,则可以将服务器提示符设置为绿色,以帮助您一眼将其与本地提示符区分开。 对于绿色提示,请在提示字符前使用绿色的ANSI代码,并以代表正常默认颜色的代码结尾:

export PS1 = ` printf "\033[32m$ \033[39m" ` 
export PS1 = ` printf "\033[32m$ \033[39m" `

前景和背景

您不仅可以设置文本的颜色。 使用ANSI代码,您可以控制文本的背景颜色以及一些基本的样式。

例如,使用\ 033 [4m可以使文本带有下划线,或者使用\ 033 [5m可以将其设置为闪烁。 起初这似乎很愚蠢-因为您可能不打算将终端设置为对所有文本加下划线并全天闪烁-但对于选择功能可能很有用。 例如,您可以将shell脚本产生的紧急错误设置为闪烁(作为对用户的警报),或者可以在URL下划线。

供您参考,以下是前景色和背景色代码。 前景颜色在30范围内,背景颜色在40范围内:

颜色

前景

背景

Black

\ 033 [30m

\ 033 [40m

Red

\ 033 [31m

\ 033 [41m

Green

\ 033 [32m

\ 033 [42m

Orange

\ 033 [33m

\ 033 [43m

Blue

\ 033 [34m

\ 033 [44m

Magenta

\ 033 [35m

\ 033 [45m

Cyan

\ 033 [36m

\ 033 [46m

Light gray

\ 033 [37m

\ 033 [47m

Fallback to distro's default

\ 033 [39m

\ 033 [49m

背景还有一些其他颜色:

颜色

背景

Dark gray

\ 033 [100m

Light red

\ 033 [101m

Light green

\ 033 [102m

Yellow

\ 033 [103m

Light blue

\ 033 [104m

Light purple

\ 033 [105m

Teal

\ 033 [106m

White

\ 033 [107m

永久性

在终端会话中设置颜色只是暂时的,并且是无条件的。 有时效果会持续几行; 这是因为这种设置颜色的方法依赖于printf语句来设置一种模式,该模式仅持续到其他东西覆盖它为止。

终端仿真器通常使用LS_COLORS环境变量的设置获取有关使用哪种颜色的指令,该方法又由dircolors设置填充。 您可以使用echo语句查看当前设置:

$ 
     
     echo 
     
     $LS_COLORS 
     
     
rs = 
     
     0 : 
     
     di = 
     
     38 ; 
     
     5 ; 
     
     33 : 
     
     ln = 
     
     38 ; 
     
     5 ; 
     
     51 : 
     
     mh =00: 
     
     pi = 
     
     40 ;
     
     
38 ; 
     
     5 ; 
     
     11 : 
     
     so = 
     
     38 ; 
     
     5 ; 
     
     13 : 
     
     do = 
     
     38 ; 
     
     5 ; 
     
     5 : 
     
     bd = 
     
     48 ; 
     
     5 ;
     
     
232 ; 
     
     38 ; 
     
     5 ; 
     
     11 : 
     
     cd = 
     
     48 ; 
     
     5 ; 
     
     232 ; 
     
     38 ; 
     
     5 ; 
     
     3 : 
     
     or = 
     
     48 ;
     
     
5 ; 
     
     232 ; 
     
     38 ; 
     
     5 ; 
     
     9 : 
     
     mi =01;05; 
     
     37 ; 
     
     41 : 
     
     su = 
     
     48 ; 
     
     5 ;
     
     
196 ; 
     
     38 ; 
     
     5 ; 
     
     15 : 
     
     sg = 
     
     48 ; 
     
     5 ; 
     
     11 ; 
     
     38 ; 
     
     5 ; 
     
     16 : 
     
     ca = 
     
     48 ; 
     
     5 ;
     
     
196 ; 
     
     38 ; 
     
     5 ; 
     
     226 : 
     
     tw = 
     
     48 ; 
     
     5 ; 
     
     10 ; 
     
     38 ; 
     
     5 ; 
     
     16 : 
     
     ow = 
     
     48 ; 
     
     5 ;
     
     
[ ... 
     
     ]

或者,您可以直接使用dircolors:

$ 
     
     dircolors 
     
     --print-database 
     
     
[ ... 
     
     ] 
     
     
# image formats 
     
     

.jpg 01; 
     
     35 
     
     

.jpeg 01; 
     
     35 
     
     

.mjpg 01; 
     
     35 
     
     

.mjpeg 01; 
     
     35 
     
     

.gif 01; 
     
     35 
     
     

.bmp 01; 
     
     35 
     
     

.pbm 01; 
     
     35 
     
     

.tif 01; 
     
     35 
     
     

.tiff 01; 
     
     35 
     
     
[ ... 
     
     ]

如果看起来很神秘,那是因为。 文件类型后的第一位数字是属性代码,它具有六个选项:

  • 00无
  • 01粗体
  • 04下划线
  • 05眨眼
  • 07反向
  • 08隐蔽

下一位数字是简化形式的颜色代码。 您可以通过获取ANSII代码的最后一位来获取颜色代码(32表示绿色前景,42表示绿色背景; 31或41表示红色,依此类推)。

您的发行版可能会全局设置LS_COLORS,因此系统上的所有用户都继承相同的颜色。 如果您需要一组自定义的颜色,则可以使用dircolors。 首先,生成您的颜色设置的本地副本:

$  dircolors --print-database > ~ / .dircolors 
$  dircolors --print-database > ~ / .dircolors

根据需要编辑本地列表。 当您对选择感到满意时,请保存文件。 您的颜色设置只是一个数据库,不能直接由ls使用 ,但是您可以使用dircolors获取可用于设置LS_COLORS的shellcode:

$ 
     
     dircolors 
     
     --bourne-shell ~ 
     
     / .dircolors 
     
     
LS_COLORS = 
     
     'rs=0:di=01;34:ln=01;36:mh=00:

pi=40;33:so=01;35:do=01;35:bd=40;33;01:

cd=40;33;01:or=40;31;01:mi=00:su=37;41:

sg=30;43:ca=30;41:tw=30;42:ow=34;

[...]

export LS_COLORS

将输出复制并粘贴到〜/ .bashrc文件中,然后重新加载。 或者,您可以将该输出直接转储到.bashrc文件中并重新加载。

$ 
     
     dircolors 
     
     --bourne-shell ~ 
     
     / .dircolors 
     
     >> ~ 
     
     / .bashrc
     
     

$ 
     
     source ~ 
     
     / .bashrc

您还可以使Bash在启动时解析.dircolors,而不是手动进行转换。 实际上,您可能不会经常更改颜色,因此这可能过于激进,但是如果您打算大量更改配色方案,那么这是一个选择。 在您的.bashrc文件中,添加以下规则:

[ [ -e $HOME / .dircolors ] ] && eval " `dircolors --sh $HOME/.dircolors` " 
[ [ -e $HOME / .dircolors ] ] && eval " `dircolors --sh $HOME/.dircolors` "

如果您的主目录中有一个.dircolors文件,则Bash在启动时对其进行评估,并相应地设置LS_COLORS。

颜色

终端机中的颜色是一种简便的方法,可让您快速直观地了解特定信息。 但是,您可能不想过于依赖它们。 毕竟,颜色并不是通用的,因此,如果其他人使用您的系统,则他们可能看不到与您相同的颜色。 此外,如果您使用各种工具与计算机进行交互,您可能还会发现某些终端或远程连接无法提供您期望的颜色(或完全没有颜色)。

除了这些警告,颜色在某些工作流程中可能有用且有趣,因此请创建一个.dircolor数据库并根据您的心意对其进行自定义。

翻译自: https://opensource.com/article/19/9/linux-terminal-colors

linux更改终端颜色