Problemas con el ajuste de visualización de comandos largos en la terminal
En algunos casos, normalmente al haber redimensionado la ventana de la terminal o modificado el prompt PS1, pueden aparecer problemas al escribir comandos de una determinada longitud en consola. El comando escrito en vez de pasar al renglón de abajo cuando se llega al final de la terminal, se mantiene en su sitio reemplazando el texto actualmente escrito. En otros casos se sube una linea hacia arriba por cada letra escrita en la consola.
El problema de que las lineas no se ajusten a la ventana de la consola, puede recaer en la propia configuración del prompt, este debe tener todos los caracteres no imprimibles dentro de “\[ \]”. Si se usan comillas dobles para definir el prompt se debe usar la doble barra “\\”.
Leer: http://mywiki.wooledge.org/BashFAQ/053
Ejemplo de prompt PS1 para agregar a .bashrc (Cambia de color dependiendo del usuario).
if (( $UID == 0 )); then PS1="\\[\033[01;31m\]\u\[\033[00m\]:\[\033[36m\]\w \[\033[00m\]\$ " else PS1="\\[\033[01;32m\]\u\[\033[00m\]:\[\033[36m\]\w \[\033[00m\]\$ " fi
Si el prompt lo tenemos perfectamente configurado y seguimos teniendo problemas, lo que está pasando es que no se está actualizando la variable $COLUMNS y $LINES después de redimensionar la terminal.
Para solucionar el problema se debe consultar si se tiene activo “checkwinsize”
shopt | grep checkwinsize off
Para activar / desactivar checkwinsize.
shopt -s checkwinsize # Activa shopt -u checkwinsize # Desactiva
Si se quiere tener en todas las terminales siempre activado se puede incluir en ~/.bashrc.
checkwinsize If set, Bash checks the window size after each command and, if necessary, updates the values of LINES and COLUMNS.