linux shell 命令输入过长导致折行后的命令回到行首进行覆盖,第二行的时候又能自动换到下一行了,导致这个问题的原因是没有设置正确的 PS1 变量
-
家目录下打开 vim .bashrc 修改 PS1 变量
-
在bash中,所有在PS1中的非打印字符都必须用'[]'(不包括引号)将其包围起来,否则在计算提示符长度时也会将其计算在内,导致其无法正确地换行,也就出现了回到行首的情况
-
打印类字符如下:PS1 的常用参数如下
d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
H :完整的主机名称
h :仅取主机名中的第一个名字
:显示时间为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] "
- 效果图: