问题

问题

问题

我有一个ps1 脚本并且它工作正常(我正在使用\[$(tput setaf x)\])。但是当我使用带有颜色的 printf 时,我有两种情况:

线重叠

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

打印出来HI!的是绿色,但是打破包装

印刷 \[\]

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

打印\[\]HI!\[\]

笔记

我也尝试过,echo但没有成功

答案1

我找到的解决方案是将我的 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}\]"

至于幕后发生了什么,我仍然不知道:(

相关内容