linux shell 命令输入过长导致折行后的命令回到行首进行覆盖,第二行的时候又能自动换到下一行了,导致这个问题的原因是没有设置正确的 PS1 变量

  1. 家目录下打开 vim .bashrc 修改 PS1 变量

  2. 在bash中,所有在PS1中的非打印字符都必须用'\[\]'(不包括引号)将其包围起来,否则在计算提示符长度时也会将其计算在内,导致其无法正确地换行,也就出现了回到行首的情况

  3. 打印类字符如下: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用户,提示符为 # ,普通用户则为 $

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

  5. 我的设置如下:

    PS1 长命令回到行首进行覆盖-LMLPHP

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\] "
  1. 效果图:

    PS1 长命令回到行首进行覆盖-LMLPHP
05-11 22:36