实际上linux终端是调用ANSI控制码来实现终端彩色输出.终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关。

转义序列以控制字符'ESC'开头。该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033。多数转义序列超过两个字符,故通常以'ESC'和左括号'['开头。该起始序列称为控制序列引导符(CSI,Control Sequence Intro),通常由\033[\e[代替。

通过转义序列设置终端显示属性时,常见格式为:

\033[显示方式;前景色;背景色m输出字符串\033[0m

\e[显示方式;前景色;背景色m输出字符串\e[0m

其中 ,\033[0mor\e[0m用于恢复默认的终端输出属性,否则会影响后续的输出。

转义序列相关的常用参数如下(通过man console_codes命令可查看更多的参数描述):

  • 显示方式:0(默认)、1(粗体/高亮)、22(非粗体)、4(单条下划线)、24(无下划线)、5(闪烁)、25(无闪烁)、7(反显、翻转前景色和背景色)、27(无反显)、8(消隐)
  • 颜色:0(黑)、1(红)、2(绿)、 3(黄)、4(蓝)、5(洋红)、6(青)、7(白)
  • 前景色为30+颜色值,如31表示前景色为红色;背景色为40+颜色值,如41表示背景色为红色。

此外,还有一些ANSI控制码,如:nA (光标上移n行 )、nB(光标下移n行 )、nC(光标右移n行 )、nD (光标左移n行 )、2J(清屏)、K(清除从光标到行尾的内容)、s(保存光标位置)、u(恢复光标位置)、?25l(隐藏光标)、?25l(显示光标)。

以下实例展示(linux用echo,pycharm使用print打印即可(但windows下pycharm仅支持\033[格式)):

  1. 红色字体输出:echo -e "\033[31m红色字体\033[0m"

  2. 多种效果叠加输出:echo -e "\033[1;4;37;41m高亮+下划线+白色字体+红色背景\033[0m"

最新文章

  1. JavaScript学习笔记之string
  2. Java多线程14:生产者/消费者模型
  3. C语言 文件操作7--文件错误处理
  4. Asp.Net MVC如何返回401响应码
  5. 初识 istringstream、ostringstream、stringstream 运用
  6. query等待ajax执行完毕再继续执行下面代码的操作
  7. .net Signalr 使用笔记
  8. Spinner 实现key value 效果
  9. asp.net内置对象session和cookie
  10. 在ASP.NET MVC 中获取当前URL、controller、action(转)
  11. [DP之计数DP]
  12. ubutun 安装php7.1x
  13. Spring框架碰壁日常更新
  14. guxh的python笔记七:抽象基类
  15. qhfl-1 跨域
  16. 【scrapy】爬虫的时候总在提示 KeyError: 'novelLabel'
  17. Winform窗体控件自适应大小
  18. PHP 修改目录下所有与文件夹重名的前缀文件为index.后缀
  19. R语言低级绘图函数-title
  20. 汉诺塔python实现

热门文章

  1. CSS:超出省略三部曲
  2. react使用引入svg的icon;svg图形制作
  3. 第三天 ThinkPHP手把手高速拼接站点(三)
  4. 字典对象的 Pythonic 用法(上篇:转载)
  5. Yii2系列教程四:实现用户注册,验证,登录
  6. 自己亲自写的两本linux资料,免费下载,pdf文档
  7. Java8:纠结的默认方法
  8. 原生 javascript 基础回顾
  9. Java 遍历一个对象的属性 将非空属性赋值给另一个对象
  10. 2014秋C++第5周项目1參考-见识刚開始学习的人常见错误