Quando abro o Terminal (no Mac OS X 10.5.8) e digite uma longa linha de comando:
... o texto não passa para a próxima linha quando envolve:
Além disso, às vezes, quando digito um comando e depois retrocesso (ou seta para cima ou ^ U):
... a linha inteira não é apagada e não posso retroceder além de um certo ponto:
Este é um erro conhecido do bash (no Mac OS X)? Existe uma correção?
Atualização: Juliano estava correto, o problema foi causado pela delimitação incorreta de uma sequência de códigos do console na minha variável PS1. Alterando:
export PS1='\[\033[1;34m\]\$\]\033[0m\] '
... no meu .bashrc
para:
export PS1='\[\033[1;34m\]\$\[\033[0m\] '
...resolveu o problema.
\]
.\]
vez de '[`Respostas:
O comportamento é consistente em ter códigos de console em seu prompt (para alterar a cor etc.) e não marcar adequadamente para que o bash saiba que eles são invisíveis.
Antes de mais nada, faça o seguinte:
E então tente novamente. Se o problema for resolvido, então minhas suspeitas estão corretas.
Cada sequência de código do console deve ser delimitada com
\[
e\]
na variável PS1. Eles dizem ao bash que o que estiver lá dentro não move a posição do cursor. Leia o manual do bash para mais informações.fonte
Para ajudar a gerar um prompt limpo, tente http://www.kirsle.net/wizards/ps1.html , é bastante impressionante. Apenas tenha cuidado com os colchetes em seu prompt, ele tenta escapar deles ou algo assim.
fonte
tput
comandos corretos - que corrigiu nova linha, `` nova linha e outras correções de "histórico + retrocesso" que não poderiam ser corrigidas por outros códigos ANSI.