背景

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用户,提示符为 # ,普通用户则为 $

非打印类字符:颜色的转义序列符就是非打印字符

posted on 2024-06-26 11:08  keleman  阅读(22)  评论(0编辑  收藏  举报