PS1 长命令回到行首进行覆盖
linux shell 命令输入过长导致折行后的命令回到行首进行覆盖,第二行的时候又能自动换到下一行了,导致这个问题的原因是没有设置正确的 PS1 变量
-
家目录下打开 vim .bashrc 修改 PS1 变量
-
在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用户,提示符为 # ,普通用户则为 $ -
非打印类字符:颜色的转义序列符就是非打印字符
-
我的设置如下:
PS1="\[\e[37;1m\][\[\e[31;1m\]\u \[\e[36;1m\]@ \[\e[33;1m\]\h \[\e[35;40m\]\W\[\e[37;1m\]] \[\e[33;1m\]\\$\[\e[0m\] "
- 效果图: