Bash prompt quebra quebrada quando o caminho tem caracteres unicode (grego)

3

Quando um caminho é muito longo para caber no terminal e ele é quebrado, o seguinte aviso é quebrado e você não consegue ver corretamente o que é digitado. Veja a imagem abaixo:

Estessãoosconteúdosde.bashrcquedefinemoPS1,queéopadrãofornecidopeloUbuntu.

if["$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

O valor de $PS1 é

echo "$PS1"
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ 

Existe alguma maneira de corrigir isso?

Já vi várias outras perguntas semelhantes, e a solução proposta é incluir a parte ofensiva em \[ \] ou definir checkwinsize , mas nenhuma delas funcionou no meu caso.

Se alguém quiser testar com o caminho, é o seguinte:

/home/dimitriv/Dropbox/personal/kastoria/2018-2019/προγραμματισμός στο διαδίκτυο/newslides
    
por user000001 04.11.2018 / 14:33

1 resposta

4

Uma solução rápida poderia ser substituir a parte da configuração do título da janela PS1 por um script PROMPT_COMMAND .

Dentro do bloco case "$TERM" in ... esac do seu .bashrc , substitua o PS1=... por

PROMPT_COMMAND='printf %b "\e]0;${debian_chroot:+($debian_chroot)}$USER@$HOSTNAME:$PWD\a"'
    
por 04.11.2018 / 15:42