一些转义字符,供定制PS1(当然如果要定制PS2也可以使用,但一般很少定制PS2吧)时使用。
以下列举一些常用的:
- \h 主机名字
- \u 当前用户名字
- \w 当前工作目录
- \$ UID为0时(也就是root)效果为#,否则为$
- \t 当前二十四小时制时间
- \T 当前十二小时制时间
- \[ 开始一串非打印字符
- \] 非打印字符串结束
提示符颜色
还可以给提示符添加颜色,也是通过在PS1中使用特定的序列来实现的。"\e["表示颜色序列的开始。后面紧跟表示颜色的数字,不同的数字代表不同的颜色,有些表示前景色,有些表
示背景色,有些表示光标闪烁颜色,数字间用“;"分隔,且没有顺序关系,最后"m"表
示颜色序列的结束。后续的字符将按照颜色序列的定义显示,直到"\e[0m"重置为默认值。
比如一个可能的PS1为:“export PS1="\e[32;40m\w> \e[0m”
编码 | 颜色动作 |
---|---|
0 | 重新设置属性到缺省设置 |
1 | 设置粗体 |
2 | 设置一半亮度 |
4 | 设置下划线 |
5 | 设置闪烁 |
7 | 设置反向图象 |
22 | 设置一般密度 |
24 | 关闭下划线 |
25 | 关闭闪烁 |
27 | 关闭反向图象 |
30 | 设置黑色前景 |
31 | 设置红色前景 |
32 | 设置绿色前景 |
33 | 设置棕色前景 |
34 | 设置蓝色前景 |
35 | 设置紫色前景 |
36 | 设置青色前景 |
37 | 设置白色前景 |
38 | 在缺省的前景颜色上设置下划线 |
39 | 在缺省的前景颜色上关闭下划线 |
40 | 设置黑色背景 |
41 | 设置红色背景 |
42 | 设置绿色背景 |
43 | 设置棕色背景 |
44 | 设置蓝色背景 |
45 | 设置紫色背景 |
46 | 设置青色背景 |
47 | 设置白色背景 |
49 | 设置缺省黑色背景 |
\[ 和 \]的作用
还要特别提一下\[ 和 \]的作用,它通知Bash两者间的字符为非打印字符,
当Bash计算提示符长度时,会忽略这一串字符。这是很有必要的,比如对于定义颜色的特殊
序列,就应该包含在其中,因为颜色序列并非打印字符。如果没有将非打印字符(比如颜色
序列)包含在\[和\]之间,当输入较短命令时不会有问题,但是当输入长命令,超过使用的
终端窗口的宽度时,因为Bash将非打印字符都算入提示符长度,造成命令换行的错误,终端
窗口的显示将会错乱。
titlebar
默认情况下,
PS1=\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
分析这一段代码,发现\[ 和 \]的“\e]0;\u@\h: \w\a”还是解释不了。其实"\e]0;" 与
"\a"之间的序列用于控制终端窗口titlebar的显示。还可以把0换成1或者2,分别控制任务
栏终端窗口titlebar显示和主窗口的titlebar显示,即:
\e]1;icon-title\a\e]2;main-title\a
参考资料
[1]Bash Shell PS1: 10 Examples to Make Your Linux Prompt like
Angelina Jolie
[2]Tip: Prompt magic
[3]http://tldp.org/HOWTO/Bash-Prompt-HOWTO/xterm-title-bar-manipulations.html
[4]tput 入门
没有评论:
发表评论