第十三章 定制提示符

第十三章 定制提示符

和Linux中的很多其他事物一样,提示符也具备很强的可配置性。

分解提示符

默认提示符:


[me@linuxbox ~]$


其中me是用户名,@linuxbox是主机名,~是当前工作目录。
提示符是由环境变量PS1(提示字符串1,prompt string 1的缩写)定义的。可以通过echo命令查看PS1的内容。

提示符中用到的转义字符

转义字符 显示内容
a ASCII响铃。会使计算机发出蜂鸣声
d 当前日期(“星期几-月-日”格式)。例如Mon May 26
h 本地服务器的主机名,不包括结尾域名(trailing domain name)
H 完整的主机名
j 执行在当前Shell会话中的作业数量
l 当前终端的名称
换行符
回车符
s Shell程序的名称
24小时的当前时间(时:分:秒)
T 12小时的当前时间
@ 12小时制的当前时间(AM/PM)
A 24小时制的当前时间(时:分)
u 用户名
v Shell版本号
V Shell版本号和发布号
w 当前工作目录
W 当前工作目录的最后一部分
! 当前命令的历史纪录编号
# 当前Shell会话中输入的命令数量
$ 显示$,如果拥有超级用户权限的话,则显示#
[ 表明一个或多个非输出字符序列的开头。可用于嵌入非输出的控制字符,以某种方式操作终端仿真器,例如移动光标或更改文本颜色
] 表明一个或多个非输出字符序列的结束

换一种提示符

先保存当前提示符:

ps1_old="$PS1"

提示符设置为空:

#未设置前
me@linuxbox:~ $ PS1=
#设置后
PS1=

设置为最小化提示符:

#设置前
me@linuxbox:~ $ PS1="$ "
#设置后
$ PS1="$ "

在提示符中添加响铃:

#设置前
me@linuxbox:~ $ PS1="[a]$ "
#设置后
$ PS1="[a]$ #当按下Enter键后会嘀一声

在提示符中加入主机名和系统时间:

#设置前
me@linuxbox:~ $ PS1="A h $"
#设置后
21:11 linuxbox $ PS1="A h $"

类似于默认提示符的新提示符:

#设置前
me@linuxbox:~ $ PS1="<u@h W>$ "
#设置后
<me@linuxbox ~>$ PS1="<u@h W>$ "

增加颜色

字符颜色是由发送到终端仿真器的ANSI转义代码来控制的,转义代码可以嵌入要显示字符流中。转义代码不会输出到到屏幕上而是会被解释为一条命令。

[和]这两个转义字符用来封装非输出字符。ANSI转义代码八进制数033开头,后面是一个可选字符属性,接着是一条命令。
例如下面代码颜色设置为普通的黑色


33[0;30m


用于设置文本颜色的转义代码。颜色分为两组,区别在于是否应用了粗体bold属性(1),该属性使颜色分为深色和浅色。

设置文本颜色的转移代码:

转义代码 文本颜色 转移代码 文本颜色
33[0;30m 黑色 33[1;30m 深灰色
33[0;31m 红色 33[1;31m 浅红色
33[0;32m 绿色 33[1;32m 浅绿色
33[0;33m 棕色 33[1;33m 黄色
33[0;34m 蓝色 33[1;34m 浅蓝色
33[0;35m 紫色 33[1;35m 浅紫色
33[0;36m 青色 33[1;36m 浅青色
33[0;37m 浅灰色 33[1;37m 白色

用于设置文本背景色的转义代码

序列 背景色 序列 背景色
33[0;40m 黑色 33[0;44m 蓝色
33[0;41m 红色 33[0;45m 紫色
33[0;42m 绿色 33[0;46m 青色
33[0;43m 棕色 33[0;47m 浅灰色

注意 除了普通(0)和粗体(1)字符属性,还可以为文本设置下画线(4)、闪烁(5)及反显(7)。为了保持良好品质,许多终端仿真器禁止使用闪烁属性。


移动光标

转义代码也可以用来移动光标,通常用于在屏幕的不同位置显示时钟或其他种类的信息。

可用于移动光标的转移代码

转义代码 作用
33[1;cH 将光标移动至第一行c列
33[nA 将光标向上移动n行
33[nB 将光标向下移动n行
33[nC 将光标向前移动n个字符
33[nD 将光标向后移动n个字符
33[2J 清空屏幕并将光标移动至左上角(0行,0列)
33[K 从光标所在处一直清除当前行末尾
33[s 保存光标当前位置
33[u 恢复先前保存的光标位置


PS1=”[33[s33[0;0H33[0;41m33[K33[1;33m 33[0m33[u]<u@h w>$ “


各部分转义代码的作用

转义代码 作用
[ 表示非空输出字符序列的开始。其目的在于使Bash能够正确计算字符串可输出的部分长度。否侧的话,命令行编辑特征无法正确定位光标
33[s 保存光标位置。这是为了能在绘制完屏幕顶部的横条和时钟之后,使光标返回原处。注意有些终端不能识别此代码
33[0;0H 将光标移动至屏幕左上角(0行,0列)
33[0;41m 将背景色设置为红色
33[K 从光标当前所在处(屏幕左上角)一直清楚到行尾。因为背景色就是红色的所以清楚后的行就是红色的,从而创建红色横条。注意,清楚至行尾并不会改变光标位置,它仍停留在左上角
33[1;33m 将文本设置为黄色
显示当前时间。
33[0m 关闭颜色,对文本和背景均有效
33[u 恢复先前保存的光标位置
] 结束非输出字符序列
<u@h w>$ 提示符

保存提示符

若想永久存储提示符,将其添加到.bashr文件中是一个一劳永逸的解决办法。为此把下列两行加入该文件中:


PS1=”[33[s33[0;0H33[0;41m33[K33[1;33m 33[0m33[u]<u@h w>$ “

export PS1


© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容