背景
linux的PS1的各个字段 如 \h \ w \W \d \t 等 可以通过设置显示的颜色 更加醒目 有个性
找了好几个帖子 都没看懂语法,
最后找到设置PS1字段颜色
经过实践成功
语法记录如下:
- \e[ ->表示前(背)景颜色的开始设置
- x;ym ->设置的颜色 (x=1 加粗高亮显示 , y的值确定是设置前景(30-37) ,只有 ym时设置背景 (40-47)
- \e[m -> 设置颜色结束
颜色影响从开始设置颜色标志到下一个开始设置颜色标志(或颜色结束标志)之间的字段(字符)
提示符如果最后没有设置 颜色结束标志 则会影响 命令执行的屏幕输出信息的颜色
example1 只设置前景颜色 颜色代码 30--37
export PS1="\e[0;33m\h \e[1;34m \u \\$ \e[m"
其中前景颜色组合为 用1替换0 则为粗字体(深色)
0;30
0;31
0;32
0;33
0;34
0;35
0;36
0;37
example2 只设置背景颜色
export PS1="\e[41m\h @ \e[42m\u \\$ \e[m"
example3 设置前景和背景颜色
export PS1="\e[1;33m \h @ \e[42m \u \e[1;35m\d \\$ \e[m"
PS1中的非打印字符要用[ 以及 ] 括起来,否则 Linux上修改命令行提示符后,超长的命令自动折叠覆盖
example
PS1="\e[32m\w \e[33m'\t' \e[36m$ \e[0m"
应该为
PS1="[\e[32m]\w [\e[33m]'\t' [\e[36m]$ [\e[0m]"
在bash中,所有在PS1中的非打印字符都必须用'[]'(不包括引号)将其包围起来,否则在计算提示符长度时也会将其计算在内,导致其无法正确地换行,也就出现了回到行首的情况
打印类字符如下:PS1 的常用参数如下
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称
\h :仅取主机名中的第一个名字
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称
\W :利用basename取得工作目录名称,只显示最后一个目录名
# :下达的第几个命令
$ :提示字符,如果是root用户,提示符为 # ,普通用户则为 $