PS1: Как я эхом цветовых кодов от функций, которые выполняются в подоболочках? - PullRequest
0 голосов
/ 28 марта 2019

Я никогда прежде не касался bash, так что, возможно, решение моей проблемы очевидно, но я не могу обернуться вокруг него.Я хочу установить свой PS1 на определенные значения с определенными цветами.Он работает нормально, пока я не выведу цветовой код из подоболочки, затем он испортится.

Например:

some_color='\033[01;38;5;196m'
PS1="\[$some_color\] $USER "

Работает просто отлично.Предположим, у меня есть функция get_color, которая отображает цветовой код с escape-последовательностью, моя подсказка печатает последовательность \ [\] перед именем пользователя, а история bash портится, когда я нажимаю стрелку вверх пару раз.

some_color='\033[01;38;5;196m'
function get_color() {
  echo -n "\[$some_color\]" 
}
PS1="\$(get_color) $USER "

Когда я пропускаю последовательность, она печатает правильный вывод, но история bash все еще испорчена.Когда я использую printf и последовательности \ 001 и \ 002 вместо \ [и \], это работает просто отлично.Почему не работает эхо?

some_color='\033[01;38;5;196m'
function get_color() {
  printf \001$some_color\002" 
}
PS1="\$(get_color) $USER "
...