проблема

У меня есть сценарий ps1, и он работает нормально (я использую \[$(tput setaf x)\]). Но когда я использую printf с цветами, у меня есть 2 сценария:

пересечение линий

printf $(tput setaf 2)HI!$(tput sgr0)

Который печатает HI! в зеленом цвете, но нарушает упаковку

печать \[\]

printf \[$(tput setaf 2)\]HI!\[$(tput sgr0)\]

Который печатает \[\]HI!\[\]

Заметка

Я также пытался использовать echo без успеха

1 ответ1

0

Решение, которое я нашел, состояло в том, чтобы изменить мой ps1 от:

RESET="\[$(tput sgr0)\]"
GREEN="\[$(tput setaf 2)\]"

export PS1="${GREEN} MY PS1 ${RESET}"

Для того, чтобы:

RESET="$(tput sgr0)"
GREEN="$(tput setaf 2)"

export PS1="\[${GREEN}\] MY PS1 \[${RESET}\]"

Что касается того, что произошло за кулисами, я до сих пор не знаю :(

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .