Как чтобы правильно экранировать символы Юникода в приглашении bash

У меня есть конкретный метод для моего приглашения bash, допустим, он выглядит так:

CHAR="༇ "
my_function="
    prompt=\" \[\$CHAR\]\"
    echo -e \$prompt"

PS1="\$(${my_function}) \$ "

Чтобы объяснить вышесказанное, я построил свое приглашение bash, выполнив функцию, хранящуюся в строке, что было решением, принятым в результате этот вопрос . Давайте притворимся, что он работает нормально, потому что это так, кроме случаев, когда используются символы 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"

Это основная причина, по которой я сделал подсказку функциональной строкой. Эта escape-последовательность НЕ влияет на длину строки, это просто символ Юникода.

7
задан Community 23 May 2017 в 11:54
поделиться