Minha solução preferida é simplesmente ter o prompt sempre começar com uma nova linha. Dessa forma eu sempre tenho uma linha em branco entre a saída do último comando (exceto neste caso, é claro), o que parece mais natural para mim. E o pior caso é que, em vez de sobrescrever o texto como você está vendo, eu não entendo a linha em branco. A menos que você experimente por um tempo e simplesmente não consiga suportar a linha em branco, eu recomendo strongmente.
PS1='\n\[3[1;32m\]\u@\h\[3[0m\]:\[3[1;34m\]\w\[3[0m\]\$ '
Uma sugestão adicional, se você quiser: também uso um prompt de várias linhas para tornar minha linha de comando o maior tempo possível antes de finalizar (ou rolar se seu terminal ou shell estiver configurado para isso). Eu também gosto de saber o número da linha do histórico. Aqueles dois juntos:
PS1='\n\[3[1;32m\]\u@\h\[3[0m\]:\[3[1;34m\]\w\[3[0m \!\]\n\$ '
Por fim, também gosto de imprimir timestamps antes e depois de executar comandos. Uma versão simplificada do que eu uso para isso é:
export PROMPT_COMMAND="date +\"%Y-%m-%d %H:%M:%S (%s)\"; trap 'date +\"%Y-%m-%d %H:%M:%S (%s)\"; trap DEBUG' DEBUG"
Cabeça girando ainda? :)