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更改终端颜色