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

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

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

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

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

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

  5. 我的设置如下:

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. 效果图:
原文地址:https://www.cnblogs.com/jcblog/p/9042072.html