Bem, acho que você sabe muito bem do que estou falando; Caso contrário, verifique este vídeo . Basicamente, quando você pressiona sua matriz para obter o comando anterior, geralmente os caracteres são deixados no terminal. Existe alguma maneira de contornar o problema?
EDIT: Este problema não acontece apenas com gdb
, mas também com um terminal normal. Estas devem ser as linhas interessantes em .bashrc
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
EDIT2: Ok, vou tentar explicar isso com um exemplo. Suponha que você tenha este histórico de terminal (bastante simplificado por questões de simplicidade):
user:host$>cd foo/bar
user:host$>sudo apt-get dist-upgrade
user:host$>clear
user:host$>
Então, se você pressionar a tecla de seta para cima 3 vezes, estará esperando algo como
user:host$>cd foo/bar
mas você está obtendo em vez disso
user:host $>sudo apcd foo/bar
Este é o cenário menos divertido com o qual você pode acabar, devo admitir; às vezes há um mosaico tão complexo na tela que você quer derrubar qualquer coisa. Eu não sei qual é a causa, acho que provavelmente formatou algo ruim no arquivo .bashrc
, mas ainda não sei o quê.
No entanto, alterar as linhas .bashrc
anteriores para algo como isto
if [ "$color_prompt" = yes ]; then
PS1='\[3[1;31m\]\u:\[3[1;37m\]\W\$>\[3[0;32m\]'
PS2='\[3[1;37m\]>\[3[0;32m\]'
else
PS1='\u:\W\$'
PS2='>'
fi
o problema desaparece parcialmente: ele não está mais acontecendo no shell normal, mas se eu iniciar o gdb
, por exemplo, isso acontece na maior parte do tempo. Pode ser relacionado aos caracteres especiais?
EDIT3
Aqui estão as linhas relevantes em ~/.gdbinit
file; você pode encontrar o arquivo inteiro aqui . Talvez a sequência \]
final esteja faltando, não é?
if $USECOLOR == 1
# BLACK
if $arg0 == 0
echo 3[30m
// a lot of other if-else conditions