如何有条件地在bash提示符中包含换行符*没有填充字符*

时间:2015-11-16 01:38:39

标签: bash prompt

这是一个相当深奥的问题......

如果超过一定数量的字符,我希望我的bash提示符中断。换行后,我想要一个彩色 2-char提示符。但是,我受到以下捕获222的阻碍:

  1. 如果我使用的函数echo如果提示太长则换行,否则为空字符串,bash会抛弃换行符:

    function checknewline {
      local d=$1
      if [ ${#d} -gt  30 ]; then
        echo $'\n'
      else
        echo ''
      fi
    }
    PS1="$STUFF\$(checknewline '\w')$PROMPTCHAR" #newline gets discarded
    
  2. 我可以输入填充字符,但它必须在换行符之后。然后我在提示的第二行有填充字符,我不想要。

  3. 如果我尝试在checknewline函数中包含2-char彩色提示$PROMPTCHAR,那么我发现的shell转义或回显选项的组合都不会通过换行符和{ {1}}需要在\[...\]非打印中制作颜色转义序列。如果我当时没有使用$PROMPTCHAR,那么历史记录中的游标就会被打破。

  4. \[...\]打印echo -e "\n\[\033[0;31m\]bob\[\033[0m\]"令人深感烦恼 - 有谁知道原因或解决方法?

0 个答案:

没有答案