이전 명령의 성공에 따라 터미널 프롬프트의 색상을 변경하고 싶습니다. 현재 다음 스크립트를 통해 이를 달성합니다.
exitstatus()
{
if [[ $? == 0 ]]; then
echo -e "\e[38;5;45mबरें"
else
echo -e "\e[38;5;211mचूक"
fi
}
PS1="\[\e[38;5;252m\][\[\e[38;5;214m\]\A \$(exitstatus)\[\e[38;5;252m\]]> \[\e[0m\]"
여기서 문제는 종료 상태 내의 에코가 색상을 올바르게 이스케이프하지 않아 일부 보이지 않는 문자가 남는다는 것입니다. 긴 명령을 입력하면 터미널이 줄을 짧게 자르고 이전 줄 위에 새 줄을 쓰게 됩니다.
\[\]
PS1 변수를 사용하여 약 \e[...m
. 그러나 Echo에는 이스케이프 문자로 대괄호가 없으며 색상을 올바르게 이스케이프하는 방법을 찾을 수 없습니다.