Zeile wird überschrieben, anstatt in derselben Zeile fortzufahren

Zeile wird überschrieben, anstatt in derselben Zeile fortzufahren

Ich habe ein Problem mit der Bash-Eingabeaufforderung. Wenn ich einen Befehl eingebe, der länger als die Bildschirmbreite ist, wird er in derselben Zeile fortgesetzt und überschreibt, was ich geschrieben habe. Anschließend wird er in Zeile 2 fortgesetzt.

Das ist meine PS1:

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

Die Variablen

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

Und dann das Skript für 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}

Ich bin für jede Hilfe dankbar! Danke!

Antwort1

\[Zeichen, die den Cursor nicht bewegen, müssen zwischen und in PS1 eingeschlossen werden \], sonst denkt Bash, die Eingabeaufforderung sei länger als sie tatsächlich ist. Und aufgrund der Art und Weise, wie diese Variable verwendet wird, können Sie keine Funktion haben, die farbigen Text ausgibt, da Sie ihn nicht richtig maskieren können.

Sehenhttp://mywiki.wooledge.org/BashFAQ/053für weitere Erläuterungen.

verwandte Informationen