Linux运维知识之如何在Linux终端里用Shell和C输出带颜色的文字
小标 2019-01-16 来源 : 阅读 915 评论 0

摘要:本文主要向大家介绍了Linux运维知识之如何在Linux终端里用Shell和C输出带颜色的文字,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

本文主要向大家介绍了Linux运维知识之如何在Linux终端里用Shell和C输出带颜色的文字,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。


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


一、shell下的实现方法


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


       echo  -e  “\\033[32mHello, world!”


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


       echo -e  “\\033[0m”


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


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


      ————————————————————————–


      \\033[0m 关闭所有属性

      \\033[1m 设置高亮度

      \\033[4m 下划线

      \\033[5m 闪烁

      \\033[7m 反显

      \\033[8m 消隐

      \\033[30m 至 \\33[37m 设置前景色

      \\033[40m 至 \\33[47m 设置背景色

      \\033[nA 光标上移n行

      \\033[nB 光标下移n行

      \\033[nC 光标右移n行

      \\033[nD 光标左移n行

      \\033[y;xH设置光标位置

      \\033[2J 清屏

      \\033[K 清除从光标到行尾的内容

      \\033[s 保存光标位置

      \\033[u 恢复光标位置

      \\033[?25l 隐藏光标

      \\033[?25h 显示光标


      ————————————————————————–


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


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

      40:黑

      41:深红

      42:绿

      43:黄色

      44:蓝色

      45:紫色

      46:深绿

      47:白色


      字颜色:30———–39

      30:黑

      31:红

      32:绿

      33:黄

      34:蓝色

      35:紫色

      36:深绿

      37:白色


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


      echo -e “\\033[20;1H\\033[1;4;32mHello,world\\033[0m”


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


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


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


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


      int color = 32;


      printf(“\\033[20;1H\\033[1;4;%dmHello, world.\\033[0m”, color);


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


三、联想


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


      color=32


      print “\\033[20;1H\\033[1;4;%dHello, world.\\033[0m”%color


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

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程