博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 终端控制 颜色/位置 man console_codes
阅读量:4159 次
发布时间:2019-05-26

本文共 1548 字,大约阅读时间需要 5 分钟。

from: 

大家在终端中用ls命令查看文件的时候,不同类型的文件会显示成不同的顔色,一般来说,蓝色:表示这是一个目录。浅蓝色表示这是一个链接文件,绿色表示这是一个可执行文件,黄色表示这个一个设备文件,等等。通过echo LS_COLORS 或 dircolors命令可以查看这些关顔色的设置。

 而我们在终端中运行自己写的脚本或程序时,一般只会显示单一的默认字体顔色。如果想要实现多种顔色的及不同格式的输出的话,就要用到linux控制字符及转义字符串。

 如果一个字符的编码在进行字符映射表转换之前是00 (空字符), 07 (响铃), 08 (退格), 09 (水平制表符), 0a  (换行),  0b  (垂直制表符), 0c (换页), 0d (回车), 0e (不用切换), 0f (启用切换), 18 (取消), 1a (替补), 1b(ESC键), 7f (删除)中的一个,那么它就是一个控制字符,这里我们需要关注的是1b,1b是ESC键对应的值(运行xev命令然后按ESC可以看到X系统发出一个字节1b),ESC表示一个新的转义序列的开始,这可能导至前一个序列的终止,使用上述的18和1A也会终止一个转义序列。转义序列的功能很多,如选择字符集,控制光标,控制背景色,前景色等。

 通过man console_codes 可以查看这些功能的详细说明。

 这里,我们找几个有意思的来试验。

 在终端中输入 echo -e "\x1b[2J"

 可以看到终端中的内容被清空了。其中-e 是开启字符转义, "\x1b" 是ESC的16进制ASCII码值,这里也可经表示成八进制的\033,[是一个CSI(Control sequence introducer),转义序列的作用由最后一个字符决定的,这里J表示删除,默认情况下它删除从当前光标处到行尾的内容,这里的2为参数,它表示删除所有的显示内容。也可以使用printf "\x1b[2J"。

 echo -e "\x1b[34m"

 它把终端的前景色设置为34(蓝色)m表示设置属性。

 echo -e "\x1b[43m"

 它把终端的背景色设置为43(棕色)

 echo -e "\x1b[43m\x1b[12H\x1b[14C\x20\x1b[0m"

 它把前景色设置为棕色,然后把光标移动到12行(\x1b[12H)、14列(\x1b[14C)的位置,接着打印一个空格(\x20),然后用参数"0"恢复默认设置(\x1b[0m)。显示效果是在终端的12行14列的位置打印了一个棕色的方框。

 把上面这此东西组合起来可以实现非常有意思的功能。如下面这个shell脚本会在终端中显示一个T状的图形,从左上角向右下角移动。

#!/bin/bash  green="\x1b[42m";  default="\x1b[0m";  color=$green;  put_T()  {   echo -e "\x1b[2J\x1b[""$1""H";     mov="\x1b["$2"C";   T=$mov$color"\x20\x20\x20\x20\x20\x20"$default"\x0a$mov\x20\x20"$color"\x20\x20"$default"\x20\x20";   echo -e "$T";  }  for((i=1;i<20;i++));do    {   H=$i;   off=$(expr $i + 2);   put_T $i $off;   echo -e "\x1b[21H";      }    sleep 0.4;  done

感觉很像俄罗斯方块里的一部分,如果有兴趣的话可以想办法把这个扩展成一个俄罗斯方块哦。

转载地址:http://ezbxi.baihongyu.com/

你可能感兴趣的文章
李开复:移动互联网机会最大 微博会现最大赢家
查看>>
2006年的IT十大战略技术
查看>>
操作系统介绍
查看>>
Desktop Linux: The Dream Is Dead
查看>>
我的9年IT路
查看>>
任正非:让用户像用电一样享受云计算
查看>>
学习技术的几个境界
查看>>
计算机世界:免费的代价
查看>>
方兴东:中国网站十年
查看>>
2010年微软和谷歌十大战场:从桌面到浏览器
查看>>
马云给阿里巴巴员工的公开信
查看>>
服务器虚拟化的未来之路
查看>>
写给我们这些浮躁的系统工程师
查看>>
和平分手?你根本不知道吴恩达在百度经历了什么
查看>>
业余研究:关于腾讯与他的QQ帝国
查看>>
马云校长湖畔大学第三期讲义完整版
查看>>
iPhone为什么比Android好
查看>>
小程序的今天就是微信指数的明天
查看>>
从互联网到人工智能,BAT这七年来到底做了什么
查看>>
2012年十大科技趋势:Siri将震惊世界
查看>>