Codog

关注微信公众号:Codog代码狗

0%

让shell终端更加丰富多彩

shell是一个程序,接收输入的命令,然后交由操作系统来执行;终端是图形用户界面,可以与shell进行交互。所以我们经常说的控制台、shell终端就是我们经常使用到的那个黑框小程序。

通常情况下终端是黑底白字,虽然足够简介,但时间久了容易审美疲劳,且对于重要输出信息的提示不够明显,容易被开发人员忽略掉。

出于一个实际场景,我们希望给开发人员更强烈的提示。

我知道这里有人可能要说了,可以使用chalk啊,但那个运行在node环境下的,无法直接使用。

查阅了一些,不得不说,这里的设计有点反人类,就是不太直观,都是一些数字的特殊标记,例如,我想在终端输出一段红色文字:

1
echo "\033[31mCodog-测试文字"

结果:
image

语法说明:一般以\033[(或者\e)转义符开头,m结尾,内部是具体的格式选项,此处红色字体数字标识为31。如果是绿色就是32,想要加粗显示就是1,如果想要同时显示加粗绿色字体那么就以;分隔就好了。

image

需要注意的是,如果命令是连续执行的话,那么此格式配置会一致生效,举例:

image

所以需要一个标识符来重置我们的配置:0可以重置所有属性,24可以重置下划线属性,举例:

image

也可以在一个语句中重置属性:

image

所以通常情况,在语句结尾添加\e[0m,避免对后续输出造成影响。

image

在测试过程中发现各类型对此能力的兼容性并不一致,比如iTerm2下无法显示闪烁的文字,Mac自带终端则无法重置字体加粗属性

目前的格式下颜色仅支持20余种,其实满足了我们绝大多数的场景了,某些终端还支持更“花里胡哨”的颜色输出,比如256种颜色。

转义符为\e[38;5;<ColorNumber>m开头,例如:

image

可以发现比1的颜色对比度要高一些。

参考链接:https://misc.flogisoft.com/bash/tip_colors_and_formatting