如何理解Shell输出颜色与控制-创新互联

本篇文章为大家展示了如何理解Shell输出颜色与控制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联建站服务项目包括甘南网站建设、甘南网站制作、甘南网页制作以及甘南网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,甘南网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到甘南省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

大家都知道使用ls命令列出文件列表时,不同的文件类型会用不同的颜色显示。那么如何实现这样带颜色的文本输出呢?答案并不复杂,不管是用shell还是C语言。

一、shell下的实现方法

先来讲在shell下,如何实现。用echo命令就可以实现,参看以下例子:

  echo -e "33[32mHello, world!"

当你在终端里敲下这条命令后,是不是发现系统用绿色输出了"Hello,world!",不止如此,连之后的命令提示符都变成了绿色?不要着急,听我继续说。echo命令-e选项的作用是激活终端对反斜线转义符(即)的解释。引号内33用于引导非常规字符序列,在这里的作用就是引导设置输出属性,后边的[32m就是将前景色设置为绿色,字母m表示设置的属性类别,数字代表属性值。

设置可以单独使用,例如:

  echo -e "33[0m"

这行命令的作用是恢复属性为默认值,也就是说0m设置项用于恢复默认值。现在你的终端是不是又一切正常了?

理解了这些,剩下的就简单了。用这种命令,除了设置文本前景色,还可以设置很多属性。

下边列出其他的设置项:

  33[0m 关闭所有属性
  33[1m 设置高亮度
  33[4m 下划线
  33[5m 闪烁
  33[7m 反显
  33[8m 消隐
  33[30m 至 33[37m 设置前景色
  33[40m 至 33[47m 设置背景色
  33[nA 光标上移n行 
  33[nB 光标下移n行
  33[nC 光标右移n行
  33[nD 光标左移n行
  33[y;xH设置光标位置
  33[2J 清屏
  33[K 清除从光标到行尾的内容
  33[s 保存光标位置 
  33[u 恢复光标位置
  33[?25l 隐藏光标
  33[?25h 显示光标

各数字所代表的颜色如下:

字背景颜色范围:40----49


     40:黑


     41:深红


     42:绿


     43:黄色


     44:蓝色


     45:紫色


     46:深绿


     47:白色

字颜色:30-----------39


     30:黑


     31:红

     32:绿


     33:黄


     34:蓝色


     35:紫色


     36:深绿


     37:白色

另外,同类的多种设置项可以组合在一起,中间用分号(;)隔开。

如下:

  echo -e "33[20;1H33[1;4;32mHello,world33[0m"

这行命令首先33[20;1H将光标移动到终端第20行第1列,之后的33[1;4;32m将文本属性设置为高亮、带下划线且颜色为绿色,然后输出Hello,world;最后33[0m将终端属性恢复为默认值,这样就不会看到连命令完成后的命令提示符也变了样儿了。

通过以上各种命令的组合就可以实现对终端输出地复杂控制。

二、如何在C编程中实现?

理解了以上在Shell中的实现方法,关于在C中如何实现就很简单了。可以说只需要用printf函数代替上边的echo -e就OK了参见下例:

  int color = 32;

  printf("33[20;1H33[1;4;%dmHello, world.33[0m", color);

这个例子类似上边shell中最后那个例子,只是这里颜色值通过变量color来指定(当然,也可以直接指定)。

三、联想

看到这里你可能会想,是不是在其他编程语言里也可以用类似的方法实现对终端输出的控制呢?答案是肯定的!比如在python中,可以如下输出:

  color=32

  print “33[20;1H33[1;4;%dHello, world.33[0m"%color

这个例子的效果跟上边C的例子是相同的。


上述内容就是如何理解Shell输出颜色与控制,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


网站名称:如何理解Shell输出颜色与控制-创新互联
分享URL:http://ybzwz.com/article/ceiddo.html