这是一个相当深奥的问题......
如果超过一定数量的字符,我希望我的bash提示符中断。换行后,我想要一个彩色 2-char提示符。但是,我受到以下捕获222的阻碍:
如果我使用的函数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
我可以输入填充字符,但它必须在换行符之后。然后我在提示的第二行有填充字符,我不想要。
如果我尝试在checknewline函数中包含2-char彩色提示$PROMPTCHAR
,那么我发现的shell转义或回显选项的组合都不会通过换行符和{ {1}}需要在\[...\]
非打印中制作颜色转义序列。如果我当时没有使用$PROMPTCHAR
,那么历史记录中的游标就会被打破。
\[...\]
打印echo -e "\n\[\033[0;31m\]bob\[\033[0m\]"
令人深感烦恼 - 有谁知道原因或解决方法?