每天写500字每周500字每天写1000字

linux命令行学习(59):提示符中设置光标定位的转义序列

2019-12-21  本文已影响0人  金石明镜


一、设置光标定位的用途

在提示符中,不但可以设置颜色,还可以设置光标定位,当然,也是通过转义序列来设置。

设置光标定位,通常用来在屏幕的不同位置(比如屏幕上方的一角)显示一个时钟或其他信息。

二、设置光标定位的作法

以在屏幕左上角显示时间为例,介绍设置的作法:

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的前后加转义字符串:在其前面定义颜色,并在后面关闭颜色。那样,这个定义就更长了。

上一篇下一篇

猜你喜欢

热点阅读