Cuando abro Terminal (en Mac OS X 10.5.8) y escribo una línea de comando larga:
... el texto no pasa a la siguiente línea cuando se ajusta:
Además, a veces cuando escribo un comando y luego retrocedo (o flecha hacia arriba o ^ U):
... toda la línea no se borra y no puedo retroceder más allá de cierto punto:
¿Es este un error conocido de bash (en Mac OS X)? ¿Hay alguna solución?
Actualización: Juliano estaba en lo correcto, el problema fue causado por delimitar incorrectamente una secuencia de código de consola en mi variable PS1. Cambiando:
export PS1='\[\033[1;34m\]\$\]\033[0m\] '
... en mi .bashrc
para:
export PS1='\[\033[1;34m\]\$\[\033[0m\] '
...resuelve el problema.
\]
.\]
lugar de '[`Respuestas:
El comportamiento es consistente con tener códigos de consola en su solicitud (para cambiar el color, etc.) y no marcarlos correctamente para que bash sepa que son invisibles.
Antes que nada, haz esto:
Y luego inténtalo de nuevo. Si se resuelve el problema, mis sospechas son correctas.
Cada secuencia de código de consola debe estar delimitada con
\[
y\]
en la variable PS1. Le dicen a bash que lo que esté allí no mueve la posición del cursor. Lea el manual de bash para más información.fuente
Para ayudar a generar un aviso desinfectado, intente http://www.kirsle.net/wizards/ps1.html es bastante impresionante. Solo tenga cuidado con los corchetes en su mensaje, intenta escapar de ellos o algo así.
fuente
tput
comandos correctos , que ha corregido la nueva línea, `` nueva línea y otras correcciones de 'historial + retroceso' que no pueden solucionarse usando otros códigos ANSI.