美文网首页每天写500字每周500字每天写1000字
linux命令行学习(59):提示符中设置光标定位的转义序列

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

作者: 金石明镜 | 来源:发表于2019-12-21 20:46 被阅读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的前后加转义字符串:在其前面定义颜色,并在后面关闭颜色。那样,这个定义就更长了。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/zwxnnctx.html