我有一個具體方法爲我的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
您贏了這個竅門,發佈了完整的解決方案作爲評論 –