我有一个具体方法为我的bash提示符,比方说,它看起来像这样:如何逃脱bash的Unicode字符提示正确
CHAR="༇ "
my_function="
prompt=\" \[\$CHAR\]\"
echo -e \$prompt"
PS1="\$(${my_function}) \$ "
为说明上述情况,我通过执行builidng我的bash提示符存储在字符串中的函数,这是作为this question的结果做出的决定。让我们假装它可以正常工作,因为它确实如此,除非涉及unicode字符
我试图找到正确的方法来转义unicode字符,因为现在它与bash行长度混淆。测试它是否损坏的简单方法是输入一个长命令,执行它,按下CTRL-R键并找到它,然后按下CTRL-A CTRL-E跳到该行的开头/结尾。如果文本出现乱码,那么它不起作用。
我已经尝试了几件事情来正确地转义函数字符串中的Unicode字符,但似乎没有任何工作。
特殊字符,像这样的工作:
COLOR_BLUE=$(tput sgr0 && tput setaf 6)
my_function="
prompt="\\[\$COLOR_BLUE\\] \"
echo -e \$prompt"
这是我做了提示功能串的主要原因。该转义序列不会混乱行长,它只是unicode字符。
我试过没有\\ [\\],我得到了同样的乱码结果。但是,如果我用x这样的正常字符替换,我看不到问题(再次,不使用转义序列)。我也试过△作为一个不同的角色,但同样的事情 –
也许你可以换一对诅咒命令的问题的顺序,像'tput的sc',打印两个空格,'tput的rc',打印您的Unicode字符。这两个空格(或其他具有正确宽度的序列)必须位于'\ [... \]'之外,其余部分都在其中。另请参阅http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html – tripleee
您赢了这个窍门,发布了完整的解决方案作为评论 –