같은 줄에서 계속되는 대신 줄을 덮어씁니다.

같은 줄에서 계속되는 대신 줄을 덮어씁니다.

bash 프롬프트에 문제가 있습니다. 화면 너비의 길이를 초과하는 명령을 입력하면 같은 줄에 계속해서 내가 작성한 내용을 덮어쓴 다음 2번째 줄에 계속됩니다.

이것은 내 PS1입니다.

PS1="\$(git_prompt) ${BIWhite}\W${Color_Off} → "

변수

BIWhite='\e[1;97m'
Color_Off='\e[0m'

그런 다음 git_prompt 스크립트는 다음과 같습니다.

git_prompt() {
local g="$(__gitdir)"
if [ -n "$g" ]; then
    local MINUTES_SINCE_LAST_COMMIT=`minutes_since_last_commit`
    if [ "$MINUTES_SINCE_LAST_COMMIT" -gt 30 ]; then
        local COLOR=${BRed}
    elif [ "$MINUTES_SINCE_LAST_COMMIT" -gt 10 ]; then
        local COLOR=${BIYellow}
    else
        local COLOR=${BGreen}
    fi
    local SINCE_LAST_COMMIT="${COLOR}$(minutes_since_last_commit)m${Color_Off}"
    # The __git_ps1 function inserts the current git branch where %s is
    local GIT_PROMPT=`__git_ps1 "(%s|${SINCE_LAST_COMMIT})"`
    echo ${GIT_PROMPT}
fi}

모든 도움에 감사드립니다! 감사해요!

답변1

\[커서를 움직이지 않는 문자는 PS1에서 및 사이에 묶어야 합니다 \]. 그렇지 않으면 bash는 프롬프트가 실제보다 길다고 생각합니다. 그리고 이 변수가 사용되는 방식으로 인해 색상이 지정된 텍스트를 제대로 이스케이프 처리할 수 없기 때문에 함수를 생성할 수 없습니다.

보다http://mywiki.wooledge.org/BashFAQ/053더 많은 설명을 원하시면.

관련 정보