Erro no bash terminal

Recentemente fiz uma customização no meu bash, que é a seguinte:

PS1=’\e[01;36m\u\e[m \e[01;37mat \e[0;35m/\W $ \n>>> \e[m’

porém eu percebo que certas vezes quando vou digitar outra coisa, ele não remove as três letras do último comando, ou até mesmo quando retorno em outro comando. Ele só remove essas três letras quando eu aperto enter que é o mesmo como se não tivesse nada ali, mas gostaria de sabe se tem algum erro na minha customização, ou como eu poderia corrigir isso

O Bash tá se confundindo na hora de interpretar as sequências de escape que colorem o texto.

Para resolver isso, coloque as sequências coloridoras entre \[ e \], por exemplo (não altere os “[” que vem depois dos e, no entanto):

PS1='\[\e[01;36m\]\u\[\e[m \e[01;37mat \e[0;35m/\]\W $ \n>>> \[\e[m\]'
(veja que tem um monte de \[ antes dos \e)

Basicamente, ele conta cada alteração de cor como se fosse um caractere, e conclui “o prompt tem N caracteres”, só que na verdade ele tem N-3. Quando você aperta pra cima para editar o comando, ele não remove três caracteres que ele deveria remover.

Muito obrigado pela ajuda, principalmente pela explicação