
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더 많은 설명을 원하시면.