一、设置光标定位的用途
在提示符中,不但可以设置颜色,还可以设置光标定位,当然,也是通过转义序列来设置。
设置光标定位,通常用来在屏幕的不同位置(比如屏幕上方的一角)显示一个时钟或其他信息。
二、设置光标定位的作法
以在屏幕左上角显示时间为例,介绍设置的作法:
1 保存当前光标位置。
2 将光标定位到左上角。
3 设置时间显示的颜色和背景色,可选。
4 如果设置了颜色,则关闭颜色。
5 显示时间。
6 回到原来光标位置。
7 设置要显示的提示符。
如果要显示到其它位置,则修改2;要显示其它信息,修改5。
三、光标定位的转义序列
下面是设置光标定位的转义序列,同设置颜色的转义序列一样,也是以\33开头的:
1 \33[m;nH 将光标移动至m行n列。m,n是具体的数字,例如,0,0就是左上角。
2 \33[nA 将光标向上移动n行。
3 \33[[nB 将光标向下移动n行。
4 \33[nC 将光标向前移动n个字符。
5 \33[nD 将光标向后移动n个字符。
6 \33[2J 清空屏幕并将光标移动至左上角(0行0列)。
7 \33[K 演空当前光标位置到行末的内容。
8 \33[s 存储当前光标位置。
9 \33[u 恢貫之前存储的光标位置。
四、举例
构建这样的一条提示符:每当提示符出现时,屏幕的上方会绘制出一个红色的横条,横条中有用黄色文本显示的时间:
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h\W>\$"
这条提示符设置很长,一般应当添加到文件.bashrc中去。在这个文件的末尾,添加以下两行代码:
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h\W>\$"
export PS1
下面,解释一下这个定义:
1 最外层是双引号,定义环境变量,要用引号括起来。
2 要使用转义序列,需要用\[和\]括起来。上面定义中,最前面的\[和<前面的\]起这个作用。
3 \033[s:保存当前的光标位置。
4 033[0;0H:定位光标到左上角。
5 \033[0;41m:设置背景为红色。
6 \033[K:将屏幕第一行清空。
7 033[1;33m:设置文本颜色为黄色。
8 \t:显示时间。
9 \033[0m:关闭颜色。
10 \033[u:恢复原来的光标位置。
11 <\u@\h\W>\$:要显示的提示字符串。
说明:这个定义的颜色,只涉及左上角的时间。如果要想显示的提示字符串有非默认颜色,还需要在11的前后加转义字符串:在其前面定义颜色,并在后面关闭颜色。那样,这个定义就更长了。